簡體   English   中英

htaccess中的Access-Control-Allow-Origin

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM