我無法在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處理請求的方式。 –