Я не могу получить данные POST в моем django webapp в приватном просмотре сафари (он работает с Chrome incognito).CSRF не работает в django с приватным просмотром сафари
Я не использую localstorage.
Я установил X-CSRFToken заголовок с помощью
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 печенье устанавливаются с помощью {% csrf_token%} и скрытый вход присутствует внутри <form>
Я проверил запрос, используя Чарльз и cookie csrftoken установлен, и заголовок X-CSRFToken установлен.
Я заметил, что сафари в приватном браузере добавляет «DNT = 1» (не отслеживать) в заголовок, не уверен, что это вызывает проблему. DNT = 1 отсутствует в запросах хром-инкогнито.
Я вошел печенье в
python2.7/сайт-пакеты/Джанго/промежуточного слоя/csrf.py
с использованием
logger.debug(request.COOKIES)
и csrftoken печенье отсутствует (и несколько других файлов cookie отсутствуют). Всего напечатано только 4 файла cookie. В первоначальном запросе присутствует 13 файлов cookie, как показано в charles.
не так как нет csrftoken это приводит к тому,
Forbidden (CSRF печенье не установлен.) 403 ошибка.
Что делает DNT = 1 в заголовке? Ограничивает ли количество разрешенных куки? Предотвращает ли это некоторые типы файлов cookie?
посмотри http://osxdaily.com/2012/08/21/how-to-enable-do-not-track-in -safari-6/ – itzMEonTV
Я не хочу включать или отключать его. Я хочу, чтобы мой webapp работал, если пользователь использует частный режим в сафари. Кажется, что заголовок DNT изменил способ обработки django запроса. –