Проверка кросс-доменного имени? - PullRequest
7 голосов
/ 08 декабря 2011

У меня есть букмарклет.Если я открою произвольную страницу (не мою) и нажму на закладку, я хотел бы проверить, вошел ли пользователь на мою страницу.

Я уже выполняю междоменный запрос AJAX с использованием Access-ControlРазрешить-Происхождение, но, похоже, здесь нет идентификатора сеанса или файла cookie.

Есть ли способ сделать это?

Ответы [ 2 ]

4 голосов
/ 09 декабря 2011

Алекс прав! Здесь полное решение. (Это не работает с IE8 и IE9!)

Вам необходимо установить withCredentials на стороне клиента. Начиная с jQuery 1.5.1 вы можете сделать это, как показано ниже ( Source ). Для более старой версии следуйте за белым кроликом .

$.ajax({
   url: a_cross_domain_url,
   xhrFields: {
      withCredentials: true
   }
});

На стороне сервера вы должны разрешить установку параметров, разрешить учетные данные и разрешить отправку. Подстановочные знаки недопустимы! Но вы можете прочитать происхождение из заголовка запроса:)

// auto adapted Access Control to origin from request header.
$headers = apache_request_headers();
foreach ($headers as $header => $value) {
    if ($header == 'Origin')
        header('Access-Control-Allow-Origin: ' . $value, true);
}
// send cookies from client
header('Access-Control-Allow-Credentials: true', true);
// allow all methods
header('Access-Control-Allow-Methods: GET, POST, OPTIONS', true);
2 голосов
/ 08 декабря 2011

Необходимо установить флаг учетных данных в значение true, а также заголовок Access-Control-Allow-Credentials

См. Также здесь: Firefox: междоменные запросы с учетными данными возвращаются пустыми

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