Установка файла cookie в поддомене из запроса ajax
У меня есть webapp на www.example.com и API на api.example.com.
webapp делает ajax-вызовы API.
где-то мне нужно положить печенье на api.example.com чтобы отслеживать сеансы.
чтобы отслеживать мою проблему, я установил тестовые куки на обоих поддоменах из webapp и api. Webapp установил файл cookie .exemple.com и api установил один .exemple.com и еще один ... api.exemple.com - ... Cookies устанавливаются с помощью Domain=.exemple.com только. Нет путь, нет HTTPOnly.
Примечание: В конце концов мне нужен только один на api.exemple.com - ... Но диссертации для тестов.
прямые запросы с помощью моего браузера (Firefox 16) отлично работают. Запрос на API: два печенья и отправил. Запрос на www: cookie установлен, и два из api также отправляются. (При условии, что я запрашиваю www после api, конечно).
теперь я очищаю куки-файлы браузера и запрашиваю только www. Запрос на www: работает нормально, как и раньше. Подзапрос по api, от запрос ajax www: файлы cookie не отправляются. Set-Cookies ничего не делает. Используя Firebug, я вижу куки в ответе. Но никаких следов их на последующих запросах или информации на странице.
I event попытался включить журнал cookies в Firefox. Абсолютно никаких следов файлов cookie из api, даже уведомления об отклонении.
в конце концов мне нужен только способ сохранить один cookie на api. И для этого я вполне открываю:)
информация: Два сервера NodeJS. Я пытался установить cookie на стороне сервера (Set-Cookie header), на стороне клиента (document.cookies), вручную используя firebug.
другие сообщения, которые я проверил без решений (и многие другие, которые я не помню):
настройка кросс-субдомена cookie с javascript
может subdomain.example.com установите cookie, который может быть прочитан example.com?
1 ответов
установите заголовок разрешить учетные данные на api
Access-Control-Allow-Credentials: true
использовать withCredentials
по просьбе
$.ajax({
url: a_cross_domain_url,
xhrFields: {
withCredentials: true
}
});
иначе XMLHttpRequest
будет не отправить печенье, независимо от Access-Control-Allow-Credentials
заголовок.
удалить шаблон Access-Control-Allow-Origin
Access-Control-Allow-Origin: http://www.example.com
шаблон *
не будет работать. Браузер откажется от ответа, если withCredentials
был набор.
ссылки:
http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/
https://developer.mozilla.org/en-US/docs/HTTP_access_control
http://arunranga.com/examples/access-control/credentialedRequest.html