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 с сервера, обрабатываю и отправляю на сервер заголовок авторизации со всем дайджест-ответом и все в порядке. Проблема в том, что когда дайджест-вызов успешен, мой сервер возвращает заголовок 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 ??


person Kalamarico    schedule 11.06.2012    source источник


Ответы (1)


Из спецификации CORS http://www.w3.org/TR/cors/#make-a-request-steps:

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

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

person Artem Oboturov    schedule 12.06.2012
comment
Можете ли вы подтвердить, что в этом случае они отправляют файлы cookie, созданные и установленные сайтом A (главная страница), на сайт B (пункт назначения Ajax)? - person Kirill Kobelev; 12.10.2012
comment
Нет. Туда будут отправлены только те файлы cookie, которые были отправлены из домена B. С другой стороны, будет отправлено Referer, содержащее исходный URI сайта A - и, если у вас были некоторые параметры HTTP, они будут видны сайту B. - person Artem Oboturov; 13.10.2012