Запросы jQuery / Ajax на межсайтовом сервере не используют cookie (auth), установленный на этом сервере - PullRequest
1 голос
/ 10 декабря 2010

У нас есть веб-страница, которая получает данные с другого сервера.Страница загружается «локально» (то есть из файловой системы, это веб-приложение будет помещено в приложение phonegap, поэтому мы имитируем его в firefox / chrome, загружая его из файла: // url), и используем jquery и ajaxчтобы получить данные с сервера.Кажется, сервер настроен на соблюдение стандарта CORS (http://www.w3.org/TR/cors/, т. Е. Мы устанавливаем такие заголовки, как Access-Control-Allow-Origin, Access-Control-Allow-Credentials и Access-Control-Max-Age), но, тем не менее, кажется, чтоСеансовый cookie, который установлен сервером, никогда не читается и не передается обратно на сервер.И если мы создадим «вручную» сеанс на сервере (то есть отправим запросы в адресную строку, чтобы сервер установил cookie на клиенте), а затем откроем вышеупомянутую страницу, этот cookie никогда не передается обратно на серверв запросах Ajax.

Любой намек на то, что может быть неправильно?

Ответы [ 2 ]

1 голос
/ 10 декабря 2010

В каком браузере вы это тестируете? IE и Safari имеют особые правила относительно того, какие ответы они позволят устанавливать куки, особенно когда они сделаны с хоста страницы локально. Вы тестировали эту страницу на каком-либо домене, который не является локальной файловой системой?

Для IE вам потребуется настроить P3P-заголовки сервера. Для Safari вам нужно будет перейти по URL-адресу сервера, прежде чем он разрешит любые запросы, сделанные со страницы другого домена, для установки файлов cookie.

0 голосов
/ 11 декабря 2010

Вы пытаетесь установить cookie из фрейма или IFrame?

Ваша проблема может быть связана со сторонней политикой cookie. Я обнаружил, что установка следующих P3P-заголовков на веб-сервере помогает в большинстве случаев:

P3P: CP = NOI NID NOR

Это решение не будет работать в Safari, но отлично работает в IE и Firefox. Поскольку ваше приложение предназначено для IPhone, оно может не решить вашу проблему.

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