这个问题专门针对本地主机。我试图将一个localhost网页嵌入另一个localhost网页,但是它指出无法完成。这是chrome开发人员工具中的消息:
Refused to display 'http://127.0.0.1:4040/jobs/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
我尝试同时使用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能够执行的相同方式在网页上进行复制。
答案 0 :(得分:0)
我不知道关于本地主机的任何其他规则,但通常端口号是来源的一部分。同源,您需要使用相同的端口号,即单个Web服务器。
如果出于某种技术原因绝对需要使用多台服务器,则可以让一台服务器充当另一台服务器的“反向代理”,或者使用一台反向代理服务器与两台服务器通信。
答案 1 :(得分:0)
Kevin Reid 的回答是正确的,他的代理服务器解决方案也是正确的。但我会添加更多细节。
<块引用>如果两个 URL 的协议、端口(如果指定)和主机相同,则两个 URL 具有相同的来源。您可能会看到它被称为“方案/主机/端口元组”,或者只是“元组”。 (“元组”是一组共同构成一个整体的项目——双重/三重/四重/五重/等的通用形式。)
http://127.0.0.1:4040
和 http://localhost:8888
不是同源的。哎呀,根据定义,甚至 http://127.0.0.1
和 http://localhost
都不是同源的。
如何解决?此解决方案特定于 IIS 10 Windows Server 2016。但 Kevin 所说的想法是启用“反向代理”。
localhost/jobs
路由到 localhost:4040/jobs
,将 localhost/labs
路由到 localhost:8888/labs
。实际上,这将使两个 Web 服务器具有相同的来源,http://localhost
。jobs(/)?(.*)
并重写作业网络服务器的 URL http://localhost:4040/jobs/{R:2}
。测试模式以获得正确的 {R:x}
。http://localhost/jobs
和 http://localhost/labs
。