同源主机,JS不同端口

Posted

技术标签:

【中文标题】同源主机,JS不同端口【英文标题】:Same origin host, different ports in JS 【发布时间】:2011-08-08 12:28:16 【问题描述】:

两台主机

http://1.com.local/
http://2.com.local:8080/

如何使用document.domain 在两者之间启用 DOM 操作?如果我将两者都设置为com.local 它不起作用,因为第二个主机然后获得域com.local:8080

当我尝试手动将第一个域的域设置为com.local:8080 时,端口被截断,域仍然为com.local

在这种情况下如何启用 DOM 操作?

【问题讨论】:

【参考方案1】:

你不能。抱歉 - 相同的来源包括 ports

如果启用此功能,您可以使用CORS 和 ajax 将一些内容从一台服务器复制到另一台服务器。

【讨论】:

偶然发现,如果我将 localhost:8x 用于我的 api 服务器,那么我不会收到 CORS 错误。如果我使用像 1000+ 这样的标准“安全”端口,那么我确实会收到 CORS 错误。我没有在网上找到任何讨论这个问题的文档,但它可以可靠地用于 localhost 测试目的,以解决 CORS 错误。 同源包括端口,所以如果你从 localhost:// 到 localhost:1000// 你是从端口 80 到端口 1000,这是跨源 当使用端口 8x 时,它没有为 localhost 应用 CORS 策略。例如 localhost:1023 可以调用 localhost:85 而不执行 CORS。如果我将 api 切换到非端口 8x,则会强制执行 CORS 策略。 好的 - 太好了。我很惊讶 这里也一样。看起来很随意。我用谷歌搜索它试图找到支持它的东西,但我什么也没找到。无论如何,我们中的一些人现在在工作中使用端口 8x,它工作正常。不过还没有在其他浏览器上测试过。

以上是关于同源主机,JS不同端口的主要内容,如果未能解决你的问题,请参考以下文章

[同源策略

跨域解决方案

JS跨域笔记

Ajax——跨域访问

什么是跨域及如何解决json和jsonp

js之跨域