我有3個網站,A,B和C.訪問控制允許來源htaccess
網站A有一個「test.js」javascript文件,我打電話在網站B和C. test.js文件使用XMLHttpRequest獲取站點A上單獨的「stuff.html」文件的內容,以返回到調用網站上的div。
爲了允許在剛B和C點CORS基礎上this answer on StackOverflow和其他幾個人,我把下面的.htaccess在網站目錄:
<IfModule mod_headers.c>
SetEnvIf Origin "http(s)?://(www\.)?(b.com|c.com)$" AccessControlAllowOrigin=$0
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header append Vary Origin
</IfModule>
當我嘗試加載網站B,它似乎工作。但是,當我嘗試加載據點C在同一個瀏覽器,我得到以下錯誤:
XMLHttpRequest cannot load http://www.a.com/stuff.html. The 'Access-Control-Allow-Origin' header has a value 'http://www.b.com' that is not equal to the supplied origin. Origin 'http://www.c.com' is therefore not allowed access.
這就是說,如果我清除緩存,然後裝載場C,它的工作原理。但是,然後加載站點B不起作用,並給出相同的錯誤(反過來)。
有沒有辦法讓這個,讓它允許兩個網站正確加載它?不知道我可能會錯過這裏。
編輯:
位的測試之後,我也發現,使用通配符解決此問題:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin *
</IfModule>
...雖然我不知道有關的安全性因爲它對所有人開放。假設stuff.html只是一個帶錨鏈接的靜態html文件,test.js做的唯一事情就是將該文件的內容返回給客戶端頁面,有什麼需要擔心的嗎?不知道這是否會被惡意使用。
請確認是否工作! –
謝謝你的回覆,但不幸的是它沒有工作,我仍然有像以前一樣的錯誤。 –