JSONP PHP 会话不会保持不变

Posted

技术标签:

【中文标题】JSONP PHP 会话不会保持不变【英文标题】:JSONP PHP Session does not remain constant 【发布时间】:2011-01-06 09:20:19 【问题描述】:

在 xyz.com 网站上使用 JSONP,我将网站称为 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】:

根据 PHP.net 上的一些信息,添加此标头是否有效?

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

引用:

“在框架(.html,或 其他文件类型)在与提供 .php 的服务器不同的服务器上:

在这些情况下,IE6 或更高版本会默默拒绝会话 cookie,即 尝试创建(通过调用 session_start() 隐式或显式)。

因此,您的会话变量将返回一个空值。

根据 MS kb,解决方法是添加一个标头,说明您的远程 .php 页面 不会因为已获得许可而滥用。

将此标头放在将创建/更新所需会话变量的 .php 文件中:"

如果这不能解决它,它可能与 HTTReferer 有关,因为 IE 不会在从 javascript 发起的请求上发送它(例如,在 IE 中执行此操作将无法发送 HTTR Referer document.location.href = 'http://example.com/';

【讨论】:

非常感谢。如果我能给你一些我的观点,我会的。极大地帮助了我。

以上是关于JSONP PHP 会话不会保持不变的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS redis 连接会话 ID 在应该保持不变时重新生成

Eclipse xdebug 会话永远不会完成并保持 48%

php负载中使用redis实现session会话保持

如何在PHP中进行会话处理?

会话到期时的授权重定向不适用于提交 JSF 表单,页面保持不变

在 PHP 中对多页表单使用会话跟踪