在网站上使用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名称),直到我实际访问另一个窗口中的网站。
答案 0 :(得分: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 Referer {{1} }