javascript - 浏览器/JavaScript同源策略如何应用于二级域名?

标签 javascript same-origin-policy

我有一些 JavaScript 在同一域上的两个独立服务器之间共享请求。

.com 是 JavaScript 中域的要求吗?

在这种情况下,两台服务器都位于 .abc.tyy 域上,tyy 通常是 .com

想知道我是否只能使用 .com 作为域名?我收到权限被拒绝错误,但此代码在同一域 (.com) 上的其他单独服务器上运行良好。

更新: 这就是我的具体使用方法:

123.abc.tyy 有一个加载我想要访问的属性的脚本。

123.abc.tyy 上的脚本位于打开脚本标记处,将 document.domain 设置为“abc.tyy”。

当我从 234.abc.tyy 调用 123.abc.tyy 脚本中的“getUser()”函数时,出现权限被拒绝的错误。

我调用“getUser()”的方式是: 我访问http://123.abc.tyy在浏览器中,该站点允许我指定要在其框架之一中加载的 URL。我将该 URL 指向 http://234.abc.tyy/BeginLoadPatient.aspx “在该页面中我正在执行以下操作:

window.location = ' http://234.abc.tyy/LoadPatient.aspx?PatientId= ' + getUser() '; getUser 是源自 123.abc.tyy 的函数

如果我将 234.abc.tyy 和 123.abc.tyy 添加到我的受信任站点,一切正常 - 这是否会跳过同源策略?

最佳答案

不,SOP 不关心域是什么,只关心它代表相同的起源。 (您是否在某处硬编码了 .com 域?)

请注意,需要考虑的不仅仅是域。 Same Origin Policy还查看协议(protocol)、端口和主机。因此,aaa.abc.tyybbb.abc.tyy不同来源。

如果您可以控制所涉及的服务器,您可以查看 Cross-Origin Resource Sharing ,但不幸的是 CORS 仅在现代浏览器中实现(并且在支持它的 IE 版本上,仅当您明确使用它时才支持)。

当然,另一个选择是 JSON-P ,它现在具有跨浏览器工作的优势。

另一个需要注意的是document.domain,详细信息herehere .

<小时/>

编辑后更新:

The script on 123.abc.tyy at opening script tag, sets the document.domain to 'abc.tyy'.

When I call the 'getUser()' function in 123.abc.tyy's script FROM 234.abc.tyy I am getting a permission denied error.

您还需要在 BeginLoadPatient.aspx 中将 document.domain 设置为“abc.tyy”。

If I add 234.abc.tyy and 123.abc.tyy to my trusted sites, everything works fine - is this skipping over the same origin policy?

我一点也不感到惊讶(尽管对我来说这会很危险),但我对此没有第一手的了解。很容易测试。

关于javascript - 浏览器/JavaScript同源策略如何应用于二级域名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3718230/

相关文章:

java - GWT 与 Solr 索引的接口(interface)

javascript - 数组中的自定义全局过滤器

javascript - 自动填充选项标签不工作 javascript

带有 GitHub API 的 JavaScript XHR

android - Flutter:Web View 安全来源

javascript - 有没有办法绕过 Javascript/jQuery 的本地访问同源策略?

javascript - 为什么 "!duplicateNote.length"不工作?

php - 如何通过单击按钮自动发送电子邮件?

javascript - JS 加载外部 HTML,该 HTML 应该加载 HTML 的资源(CSS 和 JS)

authentication - 绕过经过身份验证的 XmlHttpRequest 的同源策略