簡體   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