0

我正在努力使 Facebook“在画布页面中进行身份验证”正常工作, 如 PHP 此处所述。我终于得到了 base64_decode 的东西,但我在将用户重定向到第 2a 节中描述的 URL 时确实失败了。我尝试了 response.redirect(url) 以及 response.setHeader('Location', url) 和我在 SO 上找到的其他选项,但这些都不起作用:/

如果我直接通过浏览器访问 URL,一切似乎都按预期工作。如果我重定向到同一域上的 URL,它也可以。也许我错过了一些基本的东西?是否可以重定向到外部域?完成这项工作的正确方法是什么?

先感谢您!

更新:我刚刚发现重定向到http://heise.dehttp://orf.at等页面有效,但不适用于http://www.google.comhttp://www.facebook.com . 我不知道这里发生了什么:/

4

2 回答 2

1

我刚刚发现重定向到类似http://heise.deor的页面http://orf.at有效,但不适用于http://www.google.comor http://www.facebook.com。我不知道这里发生了什么:/

后者发送一个X-Frame-OptionsHTTP 响应头,它告诉客户端页面是否要显示在 (i) 帧中。

Google 发送 value SAMEORIGIN,这意味着只允许来自域 google.com 的页面在 (i) 框架中显示来自 google.com 的其他页面,而 Facebook 发送DENY,这意味着该页面永远不允许在任何类型的框架中显示,无论在哪里。

于 2012-09-04T08:36:50.303 回答
0

由于我无法解决问题,因此我想与您分享我使用的解决方法。问题似乎是,Facebook 将页面包含在 iframe 中,因此只允许使用 window.top.location 进行重定向,这显然不能从服务器端完成。我现在使用了一种解决方法并渲染了一个除了 window.top.location = url 什么都不做的翡翠视图。不是很漂亮,但它有效。为什么有些页面有效而其他页面无效,这对我来说仍然是一个问题。

于 2012-09-04T08:12:13.320 回答