2012-09-03 38 views
0

我正在努力讓Facebook「在畫布頁面內進行身份驗證」工作,as described here for PHP。我終於得到base64_decode的東西工作,但我沒有把用戶重定向到2a中描述的URL。我嘗試了response.redirect(url)以及response.setHeader('Location',url)和我在SO上找到的其他選項,但沒有一個能夠工作:/從express.js重定向到外部URL不起作用

如果我通過瀏覽器直接訪問URL,一切似乎按預期工作。如果我重定向到同一個域的URL,它也可以工作。也許我錯過了一些基本的東西?是否可以重定向到外部域?什麼是完成這個工作的正確方法?

預先感謝您!

更新:我只是想通了,重定向到像http://heise.dehttp://orf.at作品的網頁,而不是http://www.google.comhttp://www.facebook.com。我不知道這裏發生了什麼:/

回答

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,這意味着永遠不允許顯示該網頁在任何一種框架中,無論在哪裏。

+0

謝謝你的解釋,這當然是有道理的! – grange

0

由於我無法解決問題,因此我想與您分享我使用的解決方法。 問題似乎是,Facebook將頁面包含在iframe中,因此只允許使用window.top.location進行重定向,這顯然不能從服務器端完成。我現在使用了一種解決方法,並呈現一個除了window.top.location = url之外什麼也不做的玉視圖。不是很漂亮,但它的作品。爲什麼有些頁面可以工作,而其他頁面則不是,這對我來說仍是一個問題