JSONP PHP Session不会保持不变

时间:2010-01-18 14:07:38

标签: php jsonp

在网站上使用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名称),直到我实际访问另一个窗口中的网站。

1 个答案:

答案 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} }