Может ли ответ AJAX установить cookie? - PullRequest
249 голосов
/ 27 июля 2010

Может ли ответ AJAX установить cookie?Если нет, каково мое альтернативное решение?Должен ли я установить его с помощью Javascript или чего-то подобного?

Ответы [ 4 ]

286 голосов
/ 27 июля 2010

В соответствии с разделом 4.6.3 спецификации w3 для XMLHttpRequest пользовательский агент должен учитывать заголовок Set-Cookie.Таким образом, ответ - да, вы должны быть в состоянии.

Цитата:

Если пользовательский агент поддерживает HTTP State Management, он должен сохранять, отбрасывать и отправлять куки (как получено в наборе-Cookie заголовок ответа и отправляется в заголовке Cookie) в зависимости от обстоятельств.

231 голосов
/ 27 июля 2010

Да , вы можете установить cookie в запросе AJAX в коде на стороне сервера так же, как и в случае обычного запроса, поскольку сервер не может различить обычный запрос или запрос AJAX.

AJAX-запросы - это просто особый способ запроса к серверу, серверу нужно будет отвечать обратно, как при любом HTTP-запросе. В ответ на запрос вы можете добавить куки.

84 голосов
/ 13 октября 2012

Для записи, имейте в виду, что все вышеперечисленное (все еще) верно только в том случае, если вызов AJAX выполняется в том же домене. Если вы хотите установить файлы cookie в другом домене с помощью AJAX, вы открываете совершенно другую банку с червями . Однако чтение междоменных файлов cookie работает (или, по крайней мере, сервер обслуживает их; разрешает ли UA вашего клиента доступ к ним для вашего кода, опять же, другая тема; по состоянию на 2014 г. они работают).

6 голосов
/ 27 февраля 2013

Также убедитесь, что ваш сервер не устанавливает безопасные файлы cookie по запросу, отличному от http. Просто обнаружил, что мой ajax-запрос получал php-сессию с установленным «secure». Поскольку я не был на https, он не отправлял cookie-файл сеанса, и мой сеанс сбрасывался при каждом ajax-запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...