我正在开发一个网站,应该是响应,以便人们可以从他们的手机访问它。该网站有一些安全的部分,可以登录使用谷歌,Facebook,…等(OAuth)。

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

对于身份验证部分,在包括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。

我搜索了一下,但没有答案让我解决这个问题。


当前回答

好吧,在这篇SO文章的帮助下花了更多的时间之后

克服“x帧选项禁止显示”

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

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

其他回答

对我来说,解决办法是进入console.developer.google.com,并将应用程序域添加到OAuth 2凭证的“Javascript Origins”部分。

如果你在vimeo中使用iframe,请更改url:

https://vimeo.com/63534746

to:

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

这对我很管用。

在PHP文件(index.php)中,将这一行添加到顶部

<?php
    header('Cross-Origin-Embedder-Policy: require-corp | same-site | same-origin | cross-origin');
?>

如果还是不行,试试这个

<?php
    header("Access-Control-Allow-Credentials: true");
    header("Access-Control-Allow-Headers: Accept, X-Access-Token, X-Application-Name, X-Request-Sent-Time");
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
    header("Access-Control-Allow-Origin: *");
    header('Cross-Origin-Opener-Policy: same-origin');
    header('Cross-Origin-Resource-Policy: same-site | same-origin | cross-origin');
    header('Cross-Origin-Embedder-Policy: require-corp | same-site | same-origin | cross-origin');
?>

在使用iframe注销具有不同域的子站点时遇到了类似的问题。我使用的解决方案是首先加载iframe,然后在加载帧后更新源代码。

var frame = document.createElement('iframe'); Frame.style.display = 'none'; 框架。setAttribute(“src”、“:空白”); document.body.appendChild(框架); 框架。addEventListener('load', () => { 框架。setAttribute(“src”,url); });

Youtube /embed,两种口味:

https://www.youtube.com/embed/watch?v=eAxV4uO8oTU&list=RDeAxV4uO8oTU&start_radio=1 https://www.youtube.com/embed/CNG7yrHHJ5A

粘贴到浏览器中查看

原文:

https://www.youtube.com/watch?v=eAxV4uO8oTU&list=RDeAxV4uO8oTU&start_radio=1 https://www.youtube.com/watch?v=CNG7yrHHJ5A

一个人需要保持“守望”?V=",另一个不是