Я знаю, что это было задано раньше в различных формах, но я не могу обойти эту проблему. Я пробовал использовать jQuery и собственный JS API для выполнения Ajax-запросов.HTTP Cookies и запросы Ajax по HTTPS
Моя ситуация следующая (см прилагаемую схему):
- браузер делает запрос HTTP
- Сервер отвечает и устанавливает Persistent Cookie
- Browser делает HTTP запрос Ajax, Cookie есть хорошо
- Сервер отвечает как ожидалось, обновления Cookie
- Браузер делает запрос HTTPS Ajax, Cookie больше не существует (?!)
- сервер дает ответ «по умолчанию», так как нет Cookie (непреднамеренное поведение)
Перед кем начинает лекцию о кросс-доменных запросов позвольте мне несколько вещей:
- Я знаю, что это междоменный запрос (другой протокол), и именно поэтому сервер устанавливает заголовок
Access-Control-Allow-Origin
в ответе (и я использую Chrome и Firefox, оба из которых поддерживают CORS) - То, что я также знаю, что HTTP-файл cookie должен управляться через HTTPS (см. here). ince host - тот же
- (EDIT) Файл cookie правильно настроен для общего домена (например, .domain.ext), и не установлены флаги HttpOnly или Secure.
Итак, почему, почему, почему браузер не передает cookie при выполнении вызова HTTPS Ajax? Есть идеи? Я собираюсь потерять рассудок ...
+-----------+ HTTP Request +-----------+
|Browser |+---------------->|Server |
+-----------+ +-----------+
HTTP Response
<----------------+
Set-cookie
Ajax HTTP Req.
+---------------->
Cookie (OK)
HTTP Response
<----------------+
Set-cookie (OK)
Ajax HTTPS Req.
+---------------->
No Cookie (!!!)
Захвата запрос HTTP дамп и проверить, если какие-либо из '' secure' и HTTP-только 'flags устанавливаются в инструкции' Set-Cookie'. Это, по крайней мере, было бы хорошим местом для начала. – dpq
Также не установлены. – NeXuS
http://stackoverflow.com/questions/5441836/jquery-cookie-values-not-maintained-while-moving-from-http-to-https похоже, что это преднамеренное ограничение. – dpq