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

Ajax POST 요청으로 인해 Django CSRF 확인이 실패하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-04 13:41:14288검색

Why is My Django CSRF Check Failing with an Ajax POST Request?

Ajax Post 요청으로 Django CSRF 검사 실패

Django 문서에 설명된 대로 CSRF 보호를 활성화하면 악의적인 교차 사이트 요청 공격을 방지하는 데 도움이 됩니다. 지침에 따라 Ajax 게시로 CSRF 검사를 구현하려고 시도했지만 여전히 거부됩니다.

이 문제를 해결하려면 다음 단계를 고려하세요.

  1. 토큰 존재 확인:
    JavaScript 코드가 CSRF 토큰을 가져와서 저장하는지 확인하세요. csrftoken이라는 변수입니다. 헤더를 설정하기 전에 이 토큰이 있어야 합니다.

    $.post("/memorize/", data, function (result) { ... });
    
    var csrftoken = getCookie('csrftoken');
    xhr.setRequestHeader("X-CSRFToken", csrftoken);
  2. 토큰 사용 확인:
    토큰을 얻은 후 Ajax 요청에 대한 헤더에 명시적으로 설정합니다. setRequestHeader를 사용합니다.
  3. 응답 확인 본문:
    Django의 응답 본문을 검사하여 누락되거나 잘못된 CSRF 토큰이 명시적으로 언급되어 있는지 확인하세요.
  4. 대체 방법(데이터 본문 사용):
    헤더를 설정하는 대신 Ajax 요청의 데이터 본문에 CSRF 토큰을 다음과 같이 삽입할 수 있습니다. 다음:

    $.ajax({
        data: {
            csrfmiddlewaretoken: '{{ csrf_token }}',
            ...  // Other data
        },
    });
  5. 디버깅 활성화:
    설정에 DEBUG = True를 추가하여 Django의 CSRF 디버깅 모드를 켭니다. 이는 응답 본문에 추가 오류 메시지나 힌트를 제공할 수 있습니다.

이러한 단계가 완료되면 Ajax 요청을 다시 제출하여 CSRF 검사가 성공적으로 통과했는지 확인하세요.

위 내용은 Ajax POST 요청으로 인해 Django CSRF 확인이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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