【问题标题】:Refusing to display LOCALHOST in a frame because 'X-Frame-Options' set to 'sameorigin'拒绝在框架中显示 LOCALHOST,因为“X-Frame-Options”设置为“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 那样复制网页。

【问题讨论】:

    标签: google-chrome firefox x-frame-options websecurity spark-ui


    【解决方案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 所说,其想法是启用“反向代理”。

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

      【讨论】:

        猜你喜欢
        • 2013-12-28
        • 2017-05-22
        • 2022-11-29
        • 2016-10-08
        • 2018-02-22
        • 2018-08-05
        • 2020-11-07
        相关资源
        最近更新 更多