![](/img/trans.png)
[英]No Access-Control-Allow-Origin header is present on the requested resource .htaccess
[英]Access-Control-Allow-Origin in htaccess
我有3個網站,A,B和C.
站點A有一個“test.js”javascript文件,我在站點B和C上調用.test.js文件使用XMLHttpRequest獲取站點A上單獨的“stuff.html”文件的內容返回到呼叫網站上的div。
為了在B和C站點上允許CORS,基於StackOverflow和其他幾個上的這個答案 ,我將以下.htaccess放在A站點目錄中:
<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唯一能做的就是將該文件的內容返回到客戶端的頁面,有什么值得擔心的嗎? 不確定是否可以利用任何惡意軟件。
試試這個......
<IfModule mod_headers.c>
SetEnvIf Origin "http(s)?://(www\.)?(b.com|c.com)$" AccessControlAllowOrigin=$0$1
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header append Vary Origin
</IfModule>
有這個問題,這對我有用:
<?php
header("Access-Control-Allow-Origin: *");
?>
所以你必須將.html改為.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.