2013-12-10 101 views
196

我正在開發一個應該能夠響應的網站,以便人們可以從手機訪問它。該網站有一些可以使用Google,Facebook等...(OAuth)登錄的安全部分。拒絕在框架中顯示,因爲它將'X-Frame-Options'設置爲'SAMEORIGIN'

服務器後端是使用ASP.Net Web API 2開發的,前端主要是帶有一些Razor的AngularJS。

對於認證部分,一切都在所有的瀏覽器工作正常,包括Android,但谷歌認證不工作在iPhone上,這讓我這個錯誤消息

Refused to display 'https://accounts.google.com/o/openid2/auth 
?openid.ns=http://specs.openid.ne…tp://axschema.org/namePerson 
/last&openid.ax.required=email,name,first,last' 
in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'. 

現在就我而言,我不在我的HTML文件中使用任何iframe。

我搜索了一下,但沒有答案讓我解決了這個問題。

+0

iFrame有時正在使用您連接的服務,哪怕是不可見的(一見鍾情) – NoWomenNoCry

回答

68

O.K.與此的幫助下花更多的時間在這之後SO發佈

Overcoming "Display forbidden by X-Frame-Options"

我設法通過增加&output=embed到URL的末尾發佈到谷歌網址前解決這一問題:

var url = data.url + "&output=embed"; 
window.location.replace(url); 
+1

其實這是對於OAUTH,正如我在原始帖子中所述。並仍然在OAUTH 2.0中。儘管Google已將其設置更改爲使用該服務,因此現在您將不得不更改某些屬性以使用OAUTH 2.0,OWIN 3.0中間件就是這種情況。如果您收到「access_denied」錯誤消息,請參閱此鏈接。 http://blogs.msdn.com/b/webdev/archive/2014/07/02/changes-to-google-oauth-2-0-and-updates-in-google-middleware-for-3- 0-0-rc-release.aspx –

+1

@AliHmer非常感謝好友。你保存了我的一天:)&output =嵌入對我來說就像一個魅力.. :) –

+0

不適用於應用程序webview中的Google日曆iframe。 – NoBugs

142

我發現了一個更好的解決方案,也許它可以幫助別人 通過"v/"更換"watch?v=",也將努力

var url = url.replace("watch?v=", "v/"); 
+0

不客氣:)很高興幫助你 –

+27

你也可以改變它使用「嵌入/」而不是「v /」所以一個完整的網址將變成:'