我无法在safari隐私浏览中将数据发布到我的django webapp(它适用于Chrome隐身程序)。CSRF不能在django中与Safari浏览器隐私浏览
我没有使用localstorage。
我设置使用
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 cookie设置使用{%csrf_token%}和隐藏的输入存在于<form>
内部我已经检查使用查尔斯请求的X CSRFToken头并设置了csrftoken cookie并设置了X-CSRFToken标头。
我注意到,在私人浏览Safari浏览器添加“DNT = 1”(不跟踪)头,不知道这是否导致问题。 Chrome浏览器隐身请求中不存在DNT = 1。
我在
python2.7 /站点包/ Django的/使用
logger.debug(request.COOKIES)
中间件/ csrf.py
登录cookie和csrftoken cookie是缺少(和其他几个饼干丢失)。只有4个饼干打印。在最初的请求中有13个cookie存在于charles中。
,因为没有csrftoken这将导致(未设置CSRF的cookie。)的
403禁止错误。
标头中的DNT = 1是做什么的?它是否限制允许的cookie数量?它是否阻止某些类型的Cookie?
看看http://osxdaily.com/2012/08/21/how-to-enable-do-not-track-in -safari-6/ – itzMEonTV
我不想启用或禁用它。如果用户在Safari浏览器中使用私人模式,我希望我的web应用程序能够正常工作。 DNT头似乎改变了django处理请求的方式。 –