GET-вызов Javascript ajax не включает cookie-sid при начальной загрузке страницы - PullRequest
2 голосов
/ 18 мая 2010

В моем приложении, когда запрашивается / iframe, я создаю cookie и обслуживаю файл iframe.html. В html-файле я использую Ajax-вызов Javascript для запроса пользовательских данных (/ user), который вызывается в $ (document) .ready и должен передать sid из cookie-файла (поэтому я знаю, что вызов аутентифицирован).

Проблема в том, что cookie-sid не передается вместе с вызовом Ajax get при первом запросе / iframe (когда еще нет cookie). После перезагрузки cookie-sid передается с вызовом / user.

У кого-нибудь есть предложения по исправлению начальной загрузки?

Я знаю, что браузер получает и сохраняет cookie, а затем отправляет его обратно на веб-сайт каждый раз, когда запрашивается новая страница, но учитывается ли это и для начальных вызовов Ajax?

1 Ответ

1 голос
/ 06 января 2011

По умолчанию «учетные данные», такие как Файлы cookie и информация об HTTP-аутентификации не отправляется в межсайтовых запросах с использованием XMLHttpRequest. Для того, чтобы отправить их, Вы должны установить withCredentials свойство объекта XMLHttpRequest.

См. http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/.

Пример

var request = new XMLHttpRequest();
var url = 'http://bar.other/resources/credentialed-content/';
function callOtherDomain(){
  if(request)
  {
   request.open('GET', url, true);
   request.withCredentials = "true";
   request.onreadystatechange = handler;
   request.send();
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...