2

在网站上使用 JSONP,比如 xyz.com,我正在调用网站 abc.com/test.php。但是,每次我调用这个站点时,我都会在 IE6 和 IE7 中获得一个新的会话 ID。在其他浏览器中它保持不变。

test.php 的代码类似于:

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

但是,在我在另一个窗口中访问http://abc.com/test.php,然后使用 JSONP 代码刷新我在 xyz.com 的页面后,它会显示一个常量 ID。我不知道为什么。有什么建议么?

这只发生在 IE6 和 IE7 中。按预期休息所有工作。不知何故,IE6 和 IE7 不会缝合以保留会话 ID(即 cookie 名称),直到我在另一个窗口中实际访问该站点。

4

1 回答 1

3

根据 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 Refererdocument.location.href = 'http://example.com/';

于 2010-01-18T14:26:42.360 回答