2012-08-11 32 views
0

我在那裏我發展我的REST端點網站:即使這兩個URL都來自XXXX.com,爲什麼仍然收到405錯誤?

https://prefixone.somesite.com

而且我還有一個網站,我發展我的UI框架:

https://prefixtwo.somesite.com

我可以成功登錄並在IE中獲得200響應。在FF和Chrome中,我得到了「405不允許的方法」。 Chrome會說「的XMLHTTPRequest無法加載XXXXXXXXXXX雞舍的情況較爲清淡。原產XXXXXXXXXXX沒有被允許訪問控制允許來源。

兩個站點都在somesite.com

仍然沒有這種情況?有資格作爲XSS在你的代碼

+0

很確定我在MDN上看到了這個解決方法。 – 2012-08-11 22:15:01

+1

這不是XSS。這將是[相同的原產地政策](https://en.wikipedia.org/wiki/Same_origin_policy)。 – icktoofay 2012-08-11 22:18:22

+0

感謝您的強大解答Fabricio。 好的 - 但是你怎麼稱呼它呢? XSS來自同一個域名?我一直試圖解決這個問題。我的代碼在IE中運行良好 - 但是當我嘗試從同一個根網址的一個前綴到另一個前綴時,FF和Chrome(需要Web開發工具)對我詛咒。 – jake 2012-08-11 22:18:45

回答

2

你的問題是「爲什麼我仍然會收到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 file來給它們明確的權限來訪問彼此的內容。

0

基本上你需要運行在JavaScript如下:

document.domain = "somesite.com"; 

這會告訴該部分應該沒關係的瀏覽器中,同源策略的目的,是somesite.com不是前綴部分。

在Google上查找「文檔域」以獲取更多信息。

0

相同的原產地政策限制了這一點。正如名字所暗示的那樣,它可以與起源一起使用,而不是域名。起源是完整的域名+協議+端口號。因此,即使在同一主機上運行的兩個頁面如果位於不同的端口或協議上也無法通信。

如果您計劃只支持較新的瀏覽器,請考慮添加x-access-control標頭。 如果您需要支持舊瀏覽器,請查看easyXDM。

相關問題