我有一些JavaScript在同一个域上的两个独立服务器之间共享请求。
.com是否需要JavaScript中的域名?
在这种情况下,两个服务器都在.abc.tyy域上,其中tyy通常是.com
想知道我是否只能在域名中使用.com?我收到权限被拒绝错误,但此代码在同一域(.com)上的其他单独服务器上正常工作。
更新 以下是我如何使用它:
123.abc.tyy有一个脚本,可以加载我想要访问的属性。
打开脚本标记时123.abc.tyy上的脚本将document.domain设置为'abc.tyy'。
当我在123.abc.tyy的脚本FROM 234.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添加到我信任的网站,一切正常 - 这是否会跳过相同的原始政策?
答案 0 :(得分:2)
不,SOP并不关心域是什么,只是它代表了相同的起源。 (可能是你在某处硬编码了.com域名吗?)
请注意,要考虑的不仅仅是域名。 Same Origin Policy也会查看协议,端口和主机。因此aaa.abc.tyy
和bbb.abc.tyy
不同的来源。
如果您控制所涉及的服务器,您可能会看Cross-Origin Resource Sharing,但遗憾的是CORS仅在现代浏览器中实现(并且在支持它的那些IE版本上,只有在您使用时才支持它)明确地说。)
另一个选择当然是JSON-P,它现在具有跨浏览器工作的优势。
另一件需要注意的事项是document.domain
,详情here和here。
更新:
打开脚本标记时123.abc.tyy上的脚本将document.domain设置为'abc.tyy'。
当我在123.abc.tyy的脚本FROM 234.abc.tyy中调用'getUser()'函数时,我收到了一个权限被拒绝的错误。
您还需要在document.domain
中将BeginLoadPatient.aspx
设置为“abc.tyy”。
如果我将234.abc.tyy和123.abc.tyy添加到我信任的网站,一切正常 - 这是否会跳过相同的原始政策?
我不会感到惊讶(虽然对我来说这将是非常狡猾的),但没有它的第一手知识。很容易测试。
答案 1 :(得分:1)
我不完全理解问题的范围,但这可能对您有用。
JavaScript Same Origin Policy - How does it apply to different subdomains?