Spring MVC Post 요청 403 오류, Get 요청 은 정상 입 니까?
1662 단어 【04】SpringMVC
원인 분석: 프로젝트 에 Spring Security 를 추가 하여 보안 통 제 를 한다 면 CSRF 보 호 는 기본적으로 열 려 있 습 니 다. 그러면 POST 방식 으로 폼 을 제출 할 때 Token 을 검증 해 야 합 니 다. 없 으 면 당연히 403 권한 이 없습니다.
해결 방식: 여기 에는 주로 두 가지 해결 방식 이 있다.
@Override
protected void configure (HttpSecurity http) throws Exception {
http.csrf().disable();
}
Ajax 가 제출 한 경우, 제출 시 Token 과 함께 제출 할 수 있 습 니 다.
$.ajax({
type: "POST",
url: "***",
data: {content:content, "${_csrf.parameterName}":"${_csrf.token}"},
error: function() {
},
success:function(data) {
}
});
Ajax 가 제출 할 때마다 이것 을 가지 고 다 니 지 않 으 려 면 이렇게 하 셔 도 됩 니 다. 우선 Header 에 meta 를 추가 하 십시오.
그리고 아 약 스 가 제출 하기 전에 Token 을 삽입 합 니 다.
$(function () {
var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");
$(document).ajaxSend(function(e, xhr, options) {
xhr.setRequestHeader(header, token);
});
});
이렇게 하면 Ajax 에서 제출 할 때 자동 으로 token 을 함께 제출 합 니 다 (폼 데이터 가 아 닌 header 에 있 습 니 다). 그러면 검증 을 통과 할 수 있 습 니 다.