>백엔드 개발 >파이썬 튜토리얼 >Django CSRF 확인 시 AJAX POST 요청이 실패하는 이유는 무엇입니까?

Django CSRF 확인 시 AJAX POST 요청이 실패하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-08 05:38:09163검색

Why Do My AJAX POST Requests Fail with a Django CSRF Check?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.