[PYTHON] Jquery 및 Django CSRF 토큰
PYTHONJquery 및 Django CSRF 토큰
나는 2 html 페이지 있습니다.
부모 페이지 및 하위 페이지. 하위 페이지 Ajax 메시지를 제출하기 위해 상위 페이지에서 코드를 실행하는 제출 단추가 들어 있습니다.
$ .load () 메서드를 사용하여 하위 페이지를로드 한 다음 버튼을 클릭하면 $ .ajax .POST 메서드가 실행됩니다. 이 포스트 메소드는 JSON String만을 파이썬 코드로 전달합니다.
IE를 제외한 모든 브라우저에서이 작업을 수행하면 정상적으로 작동합니다. 그러나 IE에서이 코드를 실행할 때. CSRF 토큰에 대한 Python / Django 오류가 발생합니다.
그 이유는 자식 페이지가 서버 측 코드가 실행되는 현재 페이지 자체를 새로 고치기 때문이라고 생각합니다.
아무도 내가이 일을 어떻게해야하는지 알지 못한다.
건배,
해결법
-
==============================
1.POST와 함께 csrf 토큰을 전달하지 않습니다. 내가 데이터에서 한 것을 해보십시오. 그것은 csrf 토큰 (또는 자신의 메서드)을 가져 와서 인수에 전달하는 것입니다.
POST와 함께 csrf 토큰을 전달하지 않습니다. 내가 데이터에서 한 것을 해보십시오. 그것은 csrf 토큰 (또는 자신의 메서드)을 가져 와서 인수에 전달하는 것입니다.
$.ajax({ url : url, type: "POST", data : {csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value}, dataType : "json", success: function( data ){ // do something } });
-
==============================
2.POST 요청 본문을 보내는 경우 대신 csrf 토큰을 요청 헤더로 추가하는 것이 더 쉽습니다. 토큰을 사용하여 요청 본문을 복잡하게 만들지 않으므로이 방법을 읽기가 더 쉽습니다. 대부분의 AJAX 요청은 csrf 토큰을 Django 문서에서 제안하는대로 헤더로 보냅니다.
POST 요청 본문을 보내는 경우 대신 csrf 토큰을 요청 헤더로 추가하는 것이 더 쉽습니다. 토큰을 사용하여 요청 본문을 복잡하게 만들지 않으므로이 방법을 읽기가 더 쉽습니다. 대부분의 AJAX 요청은 csrf 토큰을 Django 문서에서 제안하는대로 헤더로 보냅니다.
function startTest(testId) { var payload = JSON.stringify({ test_id : testId }); $.ajax({ url: "/test-service/", method: "POST", headers: {'X-CSRFToken': '{{ csrf_token }}'}, data: payload, dataType: "json" }).done(function(response) { console.log(response.id + " " + response.name); }).fail(function (error) { console.log(error); }); }
-
==============================
3.CSRF와 AJAX에 관한 문서들 :
CSRF와 AJAX에 관한 문서들 :
예제 (문서에서 가져온 것)
또는 쿠키와 상호 작용하는 다른 방법을 사용할 수 있습니다.
from https://stackoverflow.com/questions/8614947/jquery-and-django-csrf-token by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬과 ctypes : DLL에 "pointer-to-pointer"를 올바르게 전달하는 방법은 무엇입니까? (0) | 2018.10.23 |
---|---|
[PYTHON] Python - ISO 8601로 날짜 변환 (0) | 2018.10.23 |
[PYTHON] pandas : MultiIndex를 2 차 인덱스의 범위로 분할합니다. (0) | 2018.10.23 |
[PYTHON] Python과 PhantomJS에서 Selenium을 사용하여 파일 시스템에 파일 다운로드 (0) | 2018.10.23 |
[PYTHON] 파이썬은 코드 포인트가 아닌 문자로 배열에 유니 코드 문자열을 인쇄합니다. (0) | 2018.10.23 |