Facebook 从express.js重定向到外部URL无效

Facebook 从express.js重定向到外部URL无效,facebook,redirect,express,Facebook,Redirect,Express,我正在努力让Facebook的“画布页面内的身份验证”工作。我终于让base64_解码功能正常工作了,但我确实无法将用户重定向到第2a节中描述的URL。我尝试了response.redirect(url)以及response.setHeader('Location',url)和我在SO上找到的其他选项,但这些都不起作用:/ 如果我直接通过浏览器访问URL,一切似乎都会按预期进行。如果我重定向到同一个域上的URL,它也可以工作。也许我错过了一些基本的东西?是否可以重定向到外部域?正确的方法是什么

我正在努力让Facebook的“画布页面内的身份验证”工作。我终于让base64_解码功能正常工作了,但我确实无法将用户重定向到第2a节中描述的URL。我尝试了response.redirect(url)以及response.setHeader('Location',url)和我在SO上找到的其他选项,但这些都不起作用:/

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

提前谢谢你


更新:我刚刚发现重定向到像或这样的页面是有效的,但不适用于或。我不知道这里发生了什么:/

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

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

后者发送一个
X-Frame-Options
HTTP响应头,告诉客户端页面是否希望在(i)帧中显示

谷歌发送值
SAMEORIGIN
,这意味着只有来自域Google.com的页面才允许在(i)帧中显示来自Google.com的其他页面,而Facebook发送
DENY
,这意味着该页面永远不允许在任何类型的帧中显示,无论在何处