반응형
목차
미래의 내가 보기 위해 기록함
사이드 프로젝트에서 html template으로 thymeleaf 사용 하고 있다.
보통 이 에러는 클라이언트와 서버의 http method가 일치하지 않는 경우 발생하는데
내 경우는 아래처럼 form에서도 post로 보내고 서버에서도 post로 받게끔 되어 있었다.
view
<form role="form" action="/admin/board/new" th:object="${boardForm}" method="post">
<div class="form-group">
<label th:for="name">제목</label>
<input type="text" th:field="*{title}" class="form-control" placeholder="제목을 입력하세요"
th:class="${#fields.hasErrors('name')}? 'form-control fieldError' : 'form-control'">
<p th:if="${#fields.hasErrors('title')}" th:errors="*{title}">Incorrect date</p>
</div>
<div class="form-group">
<label th:for="content">내용</label>
<input type="text" th:field="*{content}" class="form-control" placeholder="내용을 입력하세요"
th:class="${#fields.hasErrors('content')}? 'form-control fieldError' : 'form-control'">
<p th:if="${#fields.hasErrors('content')}" th:errors="*{content}">Incorrect date</p>
</div>
<div class="form-group">
<label th:for="name">이름</label>
<input type="text" th:field="*{name}" class="form-control" placeholder="이름을 입력하세요"
th:class="${#fields.hasErrors('name')}? 'form-control fieldError' : 'form-control'">
<p th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Incorrect date</p>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
Controller
/**
* 게시글 작성 폼
* @param model
* @return
*/
@GetMapping("/admin/board/new")
public String createForm(Model model) {
model.addAttribute("boardForm", new BoardVO());
return "board/createBoard";
}
/**
* 게시글 작성 처리
* @param boardVO
* @return
*/
@PostMapping("/admin/board/new")
public String create(BoardVO boardVO) {
boardService.insertBoard(boardVO);
return "redirect:/admin/board/list";
}
음..아무 문제가 없는데? 😥
곰곰히 생각해 본 결과 현재 spring security가 적용되어 있었고 이 경우 POST로 보낼 때 csrf 토큰값을 같이 보내야 된다는 걸 깜박 했다.
이 경우 해결 방법이 3가지가 있다.
spring securiry 설정 변경
위험하긴 한데 spring security에서 csrf 토큰 사용 안함으로 아래처럼 변경
form submit 시 csrf 토큰 같이 전송
thymeleaf일 경우 th:action 사용
thymeleaf의 th:action을 사용할 경우 csrf token 전송하는 부분이 포함되어 있다고 함
3가지 중 택 1해서 수정하면 정상적으로 요청되어 처리가 된다.
Request method 'POST' not supported 이 에러 메시지의 경우 원인이 다양하므로
먼저 가장 기본적인 원인인 클라이언트와 서버의 http method가 일치하는지부터 확인 후 다음 스텝을 밟아서 에러를 찾자.
반응형
'IT > development' 카테고리의 다른 글
[JavaScript] Ajax 결과값 변수 저장 (0) | 2022.11.22 |
---|---|
[JavaScript] submit control(feat. onsubmit) (0) | 2022.11.22 |
[jQuery] jQuery.ajax() 사용법 예시(feat. 댓글 페이지네이션) (0) | 2022.11.21 |
[IDE] intellJ IDEA live template 생성 (0) | 2022.11.21 |
[mybatis] mybatis 이중 foreach insert(feat. 이중 계층 객체 저장) (0) | 2022.11.21 |