【问题标题】:JSONP PHP Session does not remain constantJSONP PHP 会话不会保持不变
【发布时间】: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 名称),直到我在另一个窗口中实际访问该站点。

【问题讨论】:

    标签: php jsonp


    【解决方案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/';

    【讨论】:

    • 非常感谢。如果我能给你一些我的观点,我会的。极大地帮助了我。
    猜你喜欢
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    相关资源
    最近更新 更多