Может ли ответ AJAX установить cookie?

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

Ответ 1

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

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

Ответ 2

В соответствии с спецификацией w.3 раздела 4.6.3 для XMLHttpRequest пользовательский агент должен соблюдать заголовок Set-Cookie. Итак, ответ: да, вы должны быть в состоянии.

Цитата:

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

Ответ 3

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

Ответ 4

Также убедитесь, что ваш сервер не устанавливает безопасные файлы cookie в запросе, отличном от http. Просто выяснилось, что мой запрос ajax получил сеанс php с "защищенным" набором. Поскольку я не был на https, он не отправлял файлы cookie сессии, и моя сессия получала reset для каждого запроса ajax.