Подтвердить что ты не робот

CORS withCredentials XHR preflight не публикует Cookies в Firefox

Я пытаюсь сделать сообщение CORS XHR w/credentials. Он отлично работает в Chrome, но не в Firefox. Печеньки не присутствуют в заголовках запроса перед полетом, и поэтому я вижу 302. Это отлично работает в Chrome, поскольку файлы cookie находятся в заголовках запроса перед полетом, и последующий POST проходит.

Почему бы не работать в FF? Что мне не хватает?

// assume url, boundEventHandler and uploadData are defined, as this definitely works in Chrome
var xhr = new XMLHttpRequest(); 
xhr.open("POST", url, true); 
xhr.addEventListener ("readystatechange", boundEventHandler, false); 
xhr.withCredentials = true;  // FWIW, I've also tried the string 'true'
xhr.send(uploadData);

Любые идеи? Я вижу некоторые сообщения, которые говорят, что я могу проксировать запрос на стороне сервера, но я бы предпочел, чтобы это работало в соответствии со спецификацией CORS.

Спасибо!

4b9b3361

Ответ 1

В параметре https://www.w3.org/TR/cors/#resource-preflight-requests запрос предполетной защиты никогда не включает файлы cookie. В частности, спецификация говорит:

  • Исключить учетные данные пользователя.

и ссылается на https://www.w3.org/TR/cors/#user-credentials, в котором говорится:

Термин учетные данные пользователя для целей настоящей спецификации означает файлы cookie, HTTP-аутентификация и клиентский SSL (...).

Тем не менее, фрагмент кода, который вы цитируете выше, не должен включать предполетный просмотр вообще: нет прослушивателей событий загрузки, метод такой же простой, и нет набора заголовков авторов. Поэтому, если вы действительно видите запрос перед полетом, первый вопрос - почему это происходит. Есть ли у вас какие-либо расширения в Firefox, которые могут помечать ваш объект XMLHttpRequest?