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

.com是JavaScript中域的要求吗?

在这种情况下,两个服务器都位于.abc.tyy域中,而tyy通常是.com。

想知道我是否只能对域名使用.com?我收到一个权限被拒绝的错误,但是此代码在同一domain(.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还查看协议,端口和主机。所以aaa.abc.tyybbb.abc.tyy是不同的起源。

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

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

要查看的另一件事是document.domain,详细信息herehere



编辑后更新:


  打开脚本标记时位于123.abc.tyy上的脚本将document.domain设置为'abc.tyy'。
  
  当我从234.abc.tyy的123.abc.tyy脚本中调用'getUser()'函数时,出现权限拒绝错误。


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


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


我完全不会感到惊讶(尽管对我而言这是很狡猾的),但是对此没有第一手的知识。将很容易测试。

09-20 03:28