IFRAME 中的 X-Frame 起源

X-Frame ORIGINS in IFRAME

不久前我创建了一个应用程序,客户端可以通过该应用程序使用 WebRTC 协议连接到服务器。

客户端屏幕由两半组成。一半链接到服务器并接收诸如消息之类的东西,并且具有包含 WebRTC javascript 的网页。另一个是 IFRAME。当客户端连接到服务器时,服务器向客户端发送一个在 IFRAME 中加载的网址。

我知道有些网页无法在 iframe 中加载,例如通常有密码屏幕。 Google 表格似乎没有这个限制,这很好。

现在假设我启动了一个服务器并要求 20 个人连接到它。我知道所有 20 名学生都正确连接到服务器,因为它会在我的计算机上显示他们的所有详细信息。通常,根据我的测试,15/20 就可以了。其他 5 个将获得白屏。当我在控制台中调查时,这是一个 XFRAMES ORIGIN 问题,它说正在加载的网页不允许将自身加载到 iframe 中。但是其他人(使用相同浏览器 [chrome] 和一些相同浏览器版本的人)都很好。

现在我有一个适用于一些学生的解决方案,chrome 中有一个设置叫做:

block third party cookies and site data

如果启用则不起作用,如果未启用则起作用。

现在我剩下4个学生,他们仍然只看到一个白屏,我没有解决办法。 Chrome 和 Firefox 都支持该软件,但都产生相同的问题。

建筑设置是学生通过服务器连接到互联网。他们必须通过此服务器连接,因为我的名称服务器不是本地的,而且我的网站实际上也不是本地的。

我不认为这是一个编码问题,因为它只发生在少数 select 台计算机上,其他一切都正常。因此,我认为这可能是其他方面的问题:防火墙、安全设置、配置按钮等。如果有人对我可以采取的补救措施有任何建议,那么我将非常感谢您的帮助。

我已尝试提供所有我认为相关的信息(考虑长度),但如有任何遗漏请询问。

谢谢。 亚历克斯

如果主站点的 URL 与 iframe 的 URL 不同,您将遇到 xframes 来源问题。这包括协议(http 与 https)和完整域(example.com 与 www.example.com)。换句话说,如果用户转到 example.com 而 iframe 使用 www.example.com ,则可能会导致 xframes 来源错误。或者,如果他们转到 http://www.example.com and the iframe uses https://www.example.com,您可能会收到此错误。

好的,对于将来遇到此问题的人,我将在这里 post 创建一个更新。基本上它是为那些想要解决仅显示白页的 iframe 问题的人准备的。

通过这三个解决方案,我已经解决了所有问题,但是当我想出新的问题时,我会post 将它们放在这里。希望它对某人有用:)

解决方案 1

如果您的 iframe 指向需要用户登录的位置,则它不太可能工作。出于显而易见和充分的理由,密码页面很少是跨源的。解决方案是确保在他们使用您的 iframe 页面之前,他们已完全登录到他们正在做的事情,或者提供一条错误消息,在发生这种情况时向他们提供此信息。有关详细信息,请参阅此 post:

我所在的地方我们有双重登录,所以他们先登录 google 然后 然后 进入组织。这两个登录区域都会导致您的页面加载失败。

解决方案 2(仅 Chrome)

一些服务对 QUIC 模式的反应很糟糕,我的一些用户因此遇到了问题。

修复:

  1. chrome://flags
  2. change QUIC mode to 'Disabled'

解决方案 3

如果您通过需要 cookie 的代理服务器工作,用户在启用 'Block third-party cookies and site data' 按钮时可能会遇到问题。禁用此功能会对 iframe 的运行情况产生积极影响。

在chrome中:

Settings
Search for cookies
Click 'content settings'