Сеанс PHP JSONP не остается постоянным
Используя 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 answers
На основе некоторой информации о 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 document.location.href = 'http://example.com/';