Ajax POST 요청으로 Django CSRF 확인 실패
소개:
Django는 내장된 - CSRF(Cross-Site Request Forgery) 공격으로부터 보호하는 메커니즘입니다. 그러나 이 보호는 때때로 AJAX POST 요청을 방해할 수 있습니다. 이 문서에서는 문제를 설명하고 해결 방법을 제공합니다.
문제:
Django의 CSRF로 인해 Django 뷰에 대한 AJAX POST 요청이 403 Forbidden 오류와 함께 실패할 수 있습니다. 보호. 요청의 CSRF 토큰이 Django에서 생성된 토큰과 일치하지 않을 때 오류가 발생합니다.
원인:
Ajax 요청(JavaScript 사용)이 자동으로 요청 헤더의 CSRF 토큰으로 인해 CSRF 확인이 실패합니다. Django.
해결책:
문제를 해결하려면 CSRF 토큰을 Ajax 요청의 데이터 본문에 수동으로 추가하세요. 이는 데이터 속성과 함께 $.ajax 함수를 사용하여 수행할 수 있습니다:
$.ajax({ data: { somedata: 'somedata', moredata: 'moredata', csrfmiddlewaretoken: '{{ csrf_token }}' }, ... // other Ajax options });
확인:
토큰이 올바른지 확인하려면 Ajax 요청을 하기 전에 csrfmiddlewaretoken 쿠키의 값입니다. 이 쿠키에는 csrf 토큰이 포함되어 있습니다.
대안:
원래 질문에서 언급했듯이 csrf_exempt 데코레이터를 사용하여 보기에 대한 CSRF 검사를 비활성화하는 것은 이상적인 접근 방식이 아닙니다. . CSRF 보호 메커니즘을 준수하는 것이 좋습니다.
위 내용은 Django CSRF 확인 시 AJAX POST 요청이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!