拒绝在框架中显示 LOCALHOST,因为“X-Frame-Options”设置为“sameorigin”

Posted

技术标签:

【中文标题】拒绝在框架中显示 LOCALHOST,因为“X-Frame-Options”设置为“sameorigin”【英文标题】:Refusing to display LOCALHOST in a frame because 'X-Frame-Options' set to 'sameorigin' 【发布时间】:2020-07-02 19:13:24 【问题描述】:

这个问题专门针对本地主机。我正在尝试将 localhost 网页嵌入到另一个 localhost 网页中,但是它指出这无法完成。这是 chrome 开发者工具中的消息:

Refused to display 'http://127.0.0.1:4040/jobs/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.

Pictured here

我尝试同时使用 firefox 和 chrome。这是来自 Firefox 的错误消息:

Load denied by X-Frame-Options: “SAMEORIGIN” from “http://127.0.0.1:4040/jobs/”, site does not permit cross-origin framing from “http://localhost:8888/lab”.

为什么不认为 localhost 是同源?

如何取消对本地主机的限制?

提前谢谢你。

注意我宁愿在 AJAX 请求上使用 iframe,除非 AJAX 可以像 iframe 那样复制网页。

【问题讨论】:

【参考方案1】:

我不知道是否有任何关于 localhost 的附加规则,但总的来说,端口号是来源的一部分。所以它算作同源,你需要使用相同的端口号,即一个Web服务器。

如果您出于某种技术原因绝对需要使用多台服务器,您可以让一台服务器充当另一台服务器的“反向代理”,或者使用单个反向代理服务器与两者通信。

【讨论】:

【参考方案2】:

Kevin Reid 的回答是正确的,他的代理服务器解决方案也是正确的。但我会添加更多细节。

来自Mozilla Developer Network

如果协议、端口(如果指定)和主机相同,则两个 URL 具有相同的来源。您可能会看到这被称为“方案/主机/端口元组”,或者只是“元组”。 (“元组”是一组项目,它们共同构成一个整体——双/三/四/五/等的通用形式。)

http://127.0.0.1:4040http://localhost:8888 的来源不同。哎呀,根据定义,甚至 http://127.0.0.1http://localhost 可能不是同一个来源。

如何解决?此解决方案特定于 IIS 10 Windows Server 2016。但正如 Kevin 所说,其想法是启用“反向代理”。

    安装应用程序请求路由。 转到应用程序请求路由缓存 -> 服务器代理设置并选中启用代理。 转至 URL 重写并创建入站规则。这将是两个入站规则(端口 4040 和 8888)。这样做的目的是将localhost/jobs 路由到localhost:4040/jobslocalhost/labslocalhost:8888/labs。实际上,这将使两个 Web 服务器具有相同的来源,http://localhost。 您的模式可能类似于 jobs(/)?(.*) 并为作业 Web 服务器重写 URL http://localhost:4040/jobs/R:2。测试模式以获得正确的R:x。 使用浏览器测试是否可以访问http://localhost/jobshttp://localhost/labs。 iframe 现在应该可以工作了。

【讨论】:

以上是关于拒绝在框架中显示 LOCALHOST,因为“X-Frame-Options”设置为“sameorigin”的主要内容,如果未能解决你的问题,请参考以下文章

拒绝在框架中显示网站,因为它的“X-Frame-Options”

localhost 拒绝了我们的连接请求?

拒绝在框架中显示,因为它将“X-Frame-Options”设置为 DENY facebook fb.ui 共享方法

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

拒绝在框架中显示 xyz,因为它设置了 X-Frame-Options - 我可以设置允许的域吗?

自定义搜索引擎拒绝在框架中的iframe中显示,因为它将“X-Frame-Options”设置为“sameorigin”