항해 23일차
명절이지만... 우리는 명절 없이 달린다.
개인 프로젝트 진행 중 게시물을 작성하는 post 방식에서 계속해서 오류가 발생했다.
There was an unexpected error (type=Method Not Allowed, status=405). Request method 'POST' not supported
또 열심히 구글링을 해가며 해답을 찾아갔다.
" @PostMapping annotation이 빠져있을 경우, 주고받는 방식이 맞지 않아서(예로 보낼때는 POST로 전송하지만 GET방식으로 받게 설정되있는지) 위와 같은 에러가 발생한다고 한다.
하지만 모든 경우를 체크해보았지만 모두 잘 연결되어 있었고 내가 봤을때 이상한 점이 전혀 없었다. 열심히 아주 열심히 삽질?을 하던 중 혹시 저번처럼 Security에 문제가 있지 않을까 했다.
역시나 문제가 없었다..하지만 검색중에 csrf라는걸 알게되었다.
Cross site Request forgery로 사이트간 위조 요청인데, 즉 정상적인 사용자가 의도치 않은 위조요청을 보내는 것을 의미한다. 상태를 변화시킬 수 있는 POST, PUT, DELETE 요청으로부터 보호하고 csrf protection을 적용하였을 때, html에서 아래와 같은 csrf 토큰이 포함되어야 요청을 받아들여 위조 요청을 방지한다고 한다.
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
다른 방법은 security에서 아래와 같이 해당 url을 추가해줬다.
http.csrf().ignoringAntMatchers("/posts/post")