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

Xmlhttprequest и set-cookie & cookie

Я думаю, что я неправильно понял управление файлами cookie с помощью xmlhttprequest. У меня есть сервер, ответ на XMLHttpRequest, сделанный в javascript, мой сервер возвращает Allow-Control-Access-Origin, Access-Control-Allow-Headers, Access-Control-Expose-Headers и Access-Control-Allow-Credentials заголовки с правильным значением.

Я делаю дайджест-аутентификацию на сервере с javascript, без проблем, я получаю заголовок WWW-Authenticate с сервера, я обрабатываю и отправляю на сервер заголовок авторизации со всем дайджест-ответом и все ОК. Проблема в том, что, когда вызов digest успешно завершен, мой сервер возвращает заголовок Set-Cookie, я должен его получить и добавить к остальной части моего запроса xhr. Браузер (используя Chromium и Chrome) не позволяет мне получить доступ к заголовку:

xhr.getResponseHeader("Set-Cookie");

Хорошо, в XMLHTTPREQUEST Level 2 говорится: "Возвращает все заголовки из ответа, за исключением тех, чье имя поля Set -Cookie или Set-Cookie2" Хорошо, поэтому я не могу взять это, но каковы пути? Использование Chrome Api для файлов cookie (на данный момент я не читаю об этом), но я хочу сделать это стандартным образом. С помощью:

xhr.withCredentials = true;

означает, что браузер автоматически получает set-cookie и отправляет заголовки файлов cookie??

4b9b3361

Ответ 1

Из CORS spec http://www.w3.org/TR/cors/#make-a-request-steps:

Всякий раз, когда применяются шаги запроса, выбирайте URL-адрес запроса из источника источника происхождения с установленным флагом перенаправления вручную, а флаг флага куки, установленным, если установлен флаг пропущенных учетных данных. Использовать метод запроса метода, тело объекта запроса тела тела, включая заголовки запроса автора, и включать учетные данные пользователя, если флаг опускать учетные данные не установлен. Исключить заголовок Referer, если исходное происхождение является глобально уникальным идентификатором.

Как вы правильно говорите: cookie добавляется браузером, если вы используете withCredentials.