拒绝在框架中显示,因为它将“X-Frame-Options”设置为“SAMEORIGIN”

我正在开发一个应该有响应的网站,以便人们可以通过手机访问它。 该网站有一些安全的部分,可以使用谷歌,脸谱等…(OAuth)login。

服务器后端是使用ASP.Net Web API 2开发的,前端主要是AngularJS和一些Razor。

对于身份validation部分,在所有浏览器(包括Android)中,一切正常,但Google身份validation在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。

我googlesearch,但没有答案让我解决这个问题。

我find了一个更好的解决scheme,也许它可以帮助有人用"v/"replace"watch?v=" ,它将起作用

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

好吧,在这个SOpost的帮助下花费更多的时间

克服“X-Frame-Options禁止显示”

我设法解决这个问题,通过添加&output=embed到URL的末尾之前发布到谷歌url:

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

尝试使用

https://www.youtube.com/embed/YOUR_VIDEO_CODE

你可以在“embedded代码”部分find所有的embedded代码,看起来像这样

 <iframe width="560" height="315" src="https://www.youtube.com/embed/YOUR_VIDEO_CODE" frameborder="0" allowfullscreen></iframe> 

在这种情况下,他们已将标题设置为SAMEORIGIN,这意味着它们已经禁止在其域外的iframe中加载资源。 所以这个iframe不能显示跨域

在这里输入图像说明

为此,您需要匹配您的apache或您正在使用的任何其他服务的位置

如果你使用的是Apache,那么在httpd.conf文件中。

  <LocationMatch "/your_relative_path"> ProxyPass absolute_path_of_your_application/your_relative_path ProxyPassReverse absolute_path_of_your_application/your_relative_path </LocationMatch> 

如果您正在使用iframe for vimeo,请将url更改为:

https://vimeo.com/63534746

至:

http://player.vimeo.com/video/63534746

这个对我有用。

要将youtubevideoembedded到您的angularjs页面,您可以简单地使用以下filter来处理video

 app.filter('scrurl', function($sce) { return function(text) { text = text.replace("watch?v=", "embed/"); return $sce.trustAsResourceUrl(text); }; }); 
 <iframe class="ytplayer" type="text/html" width="100%" height="360" src="{{youtube_url | scrurl}}" frameborder="0"></iframe> 

我做了下面的变化,并为我工作得很好。

只需添加属性<iframe src="URL" target="_parent" />

_parent :这将在同一窗口中打开embedded式页面。

_blank :在不同的标签

对于我来说,修正是进入console.developer.google.com并将应用程序域添加到OAuth 2凭据的“Javascript起源”部分。

稍晚,但是如果您使用native application Client ID而不是web application Client ID ,则也会导致此错误。