gpt4 book ai didi

php - 在跨域 iframe 中设置 PHP SESSION 变量时出现问题

转载 作者:可可西里 更新时间:2023-11-01 01:11:02 27 4
gpt4 key购买 nike

Coles 笔记版本:

index.php?map_id=foo 加载到 www.not-my-domain.com 上的 iframe 中。索引集 SESSION['map_id'] = foo. Flash 文件试图通过 Authenticate.php 获取 SESSION['map_id'],但 Authenticate.php 没有为 any SESSION 变量设置值。

-- 仅首次加载,跨域问题。

详细:

我在设置的位置有一个索引:SESSION['map_id'] = foo

索引文件然后加载一个闪存文件。初始化时,闪存访问一个“Authenticate.php”文件,该文件从 SESSION['map_id'] 中回显,并通过 LoadVars 加载到闪存中。 Flash 然后显示适当的数据。这一步不能用其他方式完成

这在我们的主站点上一切正常。当我们尝试通过提供 iframe 嵌入代码来移植到其他站点时,问题就出现了:

<iframe src="http://www.mydomain.com/?map_id=foo&code=bar" ... ></iframe>

在从另一个站点 (www.anotherdomain.com) 重新加载嵌入代码时,似乎 SESSION 变量已被破坏,因为 flash 只是说它们是空的。 ($map_id 输出空白)

索引文件仍会正确地将 $map_id 回显为“foo”,似乎“Authenticate.php”文件无法访问 SESSION 变量。

我已确保 session_start() 存在于所有适当的文件中。

最佳答案

PHP session ID 默认通过 cookie 传递,但您不能跨域传输 cookie。尝试通过 url 传递 session ID。

Here is the appropriate page in the php documentation .

如果没有自动完成,有几种方法可以让 php 在 url 中传递 session ID。

  1. 您可以在 url 中手动传递 session ID(必须在其他获取变量之前):

    <iframe src="http://www.mydomain.com/?&map_id=foo&code=bar">

  2. 您可以禁用 cookie,强制每个请求将 session ID 自动添加到 url:

    ini_set("session.use_cookies","0");

  3. 您可以编辑 url_rewriter.tags 设置,它告诉 PHP 使用 session ID 重写哪些 html 标签。在这里,iframe=src 已添加到默认设置中:

    ini_set("url_rewriter.tags", "a=href,area=href,frame=src,iframe=src,input=src,form=fakeentry");

关于php - 在跨域 iframe 中设置 PHP SESSION 变量时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/805136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com