Установка файла 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

Cookies и поддомены

может 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

http://api.jquery.com/jQuery.ajax/