Chrome 시크릿에서 작동하는 사파리 개인 정보 보호 브라우징의 내 django 웹 애플리케이션에 데이터를 POST 할 수 없습니다.Safari 개인 정보 보호 브라우징을 사용하는 장고에서 CSRF가 작동하지 않습니다.
localstorage를 사용하고 있지 않습니다.
난 {%의 csrf_token의 %}을 사용하여 숨겨진 입력 I 찰스를 사용하여 상기 요청을 검사 한<form>
안에 존재
var csrftoken = NMA.getCookie('csrftoken');
$.ajax({
type:"POST",
contentType: 'application/json; charset=utf-8',
beforeSend: function (request, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain){
request.setRequestHeader("X-CSRFToken", csrftoken);
}
},
url: "/profiler/logAnswers/
data: payload,
dataType: 'json'
}).done(...
csrftoken 쿠키가 설정을 이용하여 X-CSRFToken 헤더를 설정 csrftoken 쿠키가 설정되고 X-CSRFToken 헤더가 설정됩니다.
개인 정보 보호 브라우징의 사파리가 헤더에 "DNT = 1"(추적하지 않음)을 추가했음을 알았습니다. 문제가 원인인지 확실하지 않습니다. Chrome 시크릿 요청에는 DNT = 1이 없습니다.
나는
logger.debug(request.COOKIES)
를 사용
python2.7/사이트 패키지/장고/미들웨어/csrf.py
에 쿠키를 로그온하고 csrftoken 쿠키입니다 누락되었습니다 (그리고 여러 다른 쿠키가 누락되었습니다). 인쇄 된 쿠키는 4 개뿐입니다. 퀘스트에 표시되는 초기 요청에는 13 개의 쿠키가 있습니다.
더 csrftoken 이것은
금단 (CSRF 쿠키가 설정되지 않음.)가 발생하지있는 한 403 오류.
헤더의 DNT = 1은 무엇을합니까? 허용되는 쿠키 수를 제한합니까? 특정 유형의 쿠키를 차단합니까?
살펴 http://osxdaily.com/2012/08/21/how-to-enable-do-not-track-in을 모든 쿠키에 인용 부호를 대체하는 것입니다 -safari-6/ – itzMEonTV
사용하거나 사용하지 않으려합니다. 사용자가 사파리에서 개인 모드를 사용하는 경우 Webapp을 작동시키고 싶습니다. DNT 헤더는 django가 요청을 처리하는 방법을 변경하는 것으로 보입니다. –