언어 및 프레임워크/SPRING
Spring Boot - Request method 'POST' not supported 에러
문제
Spring Security 설정한 Spring Boot 환경과 React 서버사이드 환경 연동 중
관련 에러가 발생하였습니다.
분석
Sprign Security는 기본적으로 CSRF에 대한 설정이 필요하므로 일어난 문제입니다.
참고 - CSRF (tistory.com)
해결
Back-end 단위 해결
SecurityConfig.java에 아래와 같이 csrf 토큰을 무시해줄 url을 추가해주시면 됩니다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// 생략
.and() // 생략 (and는 필요시 )
.csrf()
.ignoringAntMatchers("/member/signup")
.ignoringAntMatchers("/member/signin")
.and() // 생략 (and는 필요시 )
// 생략
}
Front-end 단위 해결
Form 추가로 해결
아래 태그 하나만 추가해도 말끔히 해결이 됩니다.
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
Ajax 설정으로 해결
$.ajax({
url : "/test",
type : "post",
data : data,
beforeSend : function(xhr)
{ /*데이터를 전송하기 전에 헤더에 csrf값을 설정한다*/
xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}");
},
success : function(result){
'언어 및 프레임워크 > SPRING' 카테고리의 다른 글
Spring Boot - There are test failures 관련 처리 (0) | 2022.02.11 |
---|---|
Spring - 객체 출력 TIP (0) | 2022.02.08 |
Spring Boot - String Utils 에러 관련 (0) | 2021.07.13 |
Spring Boot - 배포 방법 (Intellij) (0) | 2021.07.12 |
댓글