从express.js重定向到外部URL不起作用

时间:2012-09-03 20:47:35

标签: facebook redirect express

我正在努力让Facebook“在画布页面中进行身份验证”工作,as described here for 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。我不知道这里发生了什么:/

2 个答案:

答案 0 :(得分:1)

  

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

后者正在发送X-Frame-Options HTTP响应标头,告诉客户端页面是否要显示在(i)帧中。

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

答案 1 :(得分:0)

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