Coles Notes版本:

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

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

详细:

我设置了索引:LoadVars

然后索引文件加载一个flash文件。初始化时,闪存访问'Authenticate.php'文件,该文件回显出$map_id并通过session_start()加载到闪存中。然后,Flash会显示相应的数据。 此步骤无法以其他方式完成

这一切在我们的主站点上运行得很好。当我们尝试通过提供iframe嵌入代码移植到其他网站时出现问题:

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

在来自其他网站(www.anotherdomain.com)的新嵌入代码中,似乎<=>变量已被破坏,因为flash只是说它们是空的。 (<=>输出空白)

索引文件仍然会正确地回显<=>为'foo',它似乎只是'Authenticate.php'文件无法访问<=>变量。

我确保<=>出现在所有适当的文件中。

有帮助吗?

解决方案

默认情况下,PHP会话ID通过Cookie传递,但您无法跨域传输Cookie。尝试通过网址传递会话ID。

这是php文档中的相应页面

如果没有自动完成,有几种方法可以让php在网址中传递会话ID。

  1. 您可以在网址中手动传递会话ID(必须先于其他获取变量):

    <!> lt; iframe src = <!> quot; http://www.mydomain.com/?<!> amp; map_id = foo <!> amp; code = bar <!> quot; <! > GT;

  2. 您可以停用Cookie,强制每个请求都自动将会话ID添加到网址:

    的ini_set(QUOT <!>; session.use_cookies QUOT <!>;和quot <!> 0 QUOT <!>);

  3. 您可以编辑url_rewriter.tags设置,该设置告诉PHP使用会话ID重写哪些html标记。这里,iframe = src已添加到默认集:

    ini_set(<!> quot; url_rewriter.tags <!> quot;,<!> quot; a = href,area = href,frame = src,iframe = src,input = src,form = fakeentry <!> QUOT);

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top