繁体   English   中英

为什么即使两个URL都来自XXXX.com,我仍然会收到405错误?

[英]Why do I still receive 405 errors even though both URLs are from XXXX.com?

我有一个网站,我正在开发我的REST端点:

https://prefixone.somesite.com

我有另一个网站,我正在开发我的UI框架:

https://prefixtwo.somesite.com

我可以成功登录并在IE中获得200响应。 在FF和Chrome中,我得到了“405方法不允许”。 Chrome通过说“XMLHTTPRequest无法加载XXXXXXXXXXX”来更清楚地了解情况.Access-Control-Allow-Origin不允许使用Origin xxxxxxxxxxx。

这两个网站都在somesite.com上

这种情况是否仍然符合XSS的条件?

你的问题是“为什么我仍会收到405,即使两个网址都是XXXX.com形式?”,但实际上,你的网址并非来自同一个网域。

xxx.yyyy.comzzz.yyyy.com不是同一个域名。 他们可能会分享他们名字的重要部分,但他们并不相同。

这是因为域内子域的所有者完全可以由完全独立的人操作。 考虑一下uk.com 该域名的所有者将其中的第三级域名作为标准英国国家级域名co.uk的竞争对手进行销售。

xxx.uk.comzzz.uk.com上的网站是完全不同的网站,您不会指望前者能够在不违反相同原始策略规则的情况下从后者加载内容。

浏览器不知道哪些域可以执行此操作,哪些不会执行此操作,因此它可以安全地运行并假设任何两个子域都可以由不同的人操作。

即使是yyyy.comwww.yyyy.com也不算是同一回事。

我希望能回答你的问题。

至于怎么办......

1)将所有内容放在同一个子域中。 在多个子域之间拆分网站的最常见原因是为了提高性能,但除非您正在运营Google或Facebook,否则它对您的性能不太可能是至关重要的,并且您可能首先要做的其他事情会更有帮助。 此外,新的SPDY协议(即将发展为HTTP v2)将使该技术过时。

2)如果必须将其拆分为多个子域,则可能需要考虑使用可以放置在每个服务器上的crossdomain.xml文件 ,以便为其提供访问彼此内容的显式权限。

基本上在您的代码中,您需要在JavaScript中运行以下代码:

document.domain = "somesite.com";

这将告诉浏览器,出于somesite.com策略的目的,应该重要的部分是somesite.com而不是前缀部分。

在Google上查找“文档域”以获取更多信息。

相同的原产地政策限制了这一点。 顾名思义它适用于起源,而不是域。 原点是完整的域名+协议+端口号。 因此,即使在同一主机上运行的两个页面在不同的端口或协议上也无法通信。

如果您计划仅支持较新的浏览器,请查看添加x-access-control标头。 如果您需要支持旧浏览器,请查看easyXDM之类的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM