JSONP PHP сессия не остается постоянной - PullRequest
2 голосов
/ 18 января 2010

Используя JSONP на сайте, скажем, xyz.com, я звоню на сайт abc.com/test.php.Однако каждый раз, когда я вызываю этот сайт, я получаю новый идентификатор сеанса в IE6 и IE7.В других браузерах оно остается постоянным.

Код test.php выглядит примерно так:

<?php
session_start();
echo session_id();
?>

Однако после того, как я захожу http://abc.com/test.php в другое окно, а затем обновляюМоя страница на xyz.com с кодом JSONP показывает постоянный идентификатор.Понятия не имею почему.Любые предложения?

Это происходит только в IE6 и IE7.Остальные все работают как положено.Каким-то образом IE6 и IE7 не сшивают, чтобы сохранить идентификатор сеанса (то есть имя файла cookie), пока я фактически не захожу на сайт в другом окне.

1 Ответ

3 голосов
/ 18 января 2010

Основываясь на какой-то информации на PHP.net, будет ли работать этот заголовок?

<?php header('P3P: CP="CAO PSA OUR"'); ?>

Цитата:

"Обходной путь при использовании переменных сеанса в файле .php, на который ссылается фрейм (.html или другой тип файла) на сервере, отличном от того, который обслуживает .php:

В этих условиях IE6 или более поздняя версия молча отклоняет файл cookie сеанса, который попытался создать (неявно или явно, вызвав session_start ()).

Как следствие, ваша переменная сеанса вернет пустое значение.

В соответствии с MS kb, обходной путь должен добавить заголовок, который говорит, что ваша удаленная страница .php не будет злоупотреблять тем фактом, что разрешение было предоставлено.

Поместите этот заголовок в файл .php, который будет создавать / обновлять переменные сеанса, которые вы хотите: "

Если это не решит проблему, это может быть связано с HTTReferer, поскольку IE не отправляет его по запросам, инициируемым из JavaScript (например, выполнение этого в IE не приведет к отправке HTTR Referer document.location.href = 'http://example.com/';

...