Spring MVC Post 요청 403 오류, Get 요청 은 정상 입 니까?

1662 단어 【04】SpringMVC
【 전재 자:https://blog.csdn.net/t894690230/article/details/52404105 】
원인 분석: 프로젝트 에 Spring Security 를 추가 하여 보안 통 제 를 한다 면 CSRF 보 호 는 기본적으로 열 려 있 습 니 다. 그러면 POST 방식 으로 폼 을 제출 할 때 Token 을 검증 해 야 합 니 다. 없 으 면 당연히 403 권한 이 없습니다.
해결 방식: 여기 에는 주로 두 가지 해결 방식 이 있다.
  • CSRF 보호 기 닫 기:
  • @Override
    protected void configure (HttpSecurity http) throws Exception {
        http.csrf().disable();
    }
    
  • CSRF 추가 폼 제출 시 숨겨 진 입력 상 자 를 추가 할 수 있 습 니 다.
  • 
    

    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 에 있 습 니 다). 그러면 검증 을 통과 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기