2017-02-20 74 views
3

我有一個調用http://myexamplefeed.com/feed/23213CORS頭「訪問控制允許來源」不匹配「(空)」,但它不是空

我剛搬到這個網站到新服務器的簡單AJAX請求和所有突然我得到這個錯誤:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://myexamplefeed.com/feed/23213 . (Reason: CORS header ‘Access-Control-Allow-Origin’ does not match ‘(null)’).

的事情是,在我的.htaccess文件我已經嘗試將與*:

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin: * 
</IfModule> 

http://myexamplefeed.com

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin: "http://myexamplefeed.com" 
</IfModule> 

我仍然得到CORS header ‘Access-Control-Allow-Origin’ does not match ‘(null)’錯誤。

是不是指的是Header set Access-Control-Allow-Origin的值,我不應該能夠在我的.htaccess文件中改變它?


更新:那是在Firefox中。在Chrome中我得到這個消息:

The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed

+1

本指南可能有所幫助。 https://enable-cors.org/server_apache.html –

+2

如果你檢查響應頭,我想你可能會在響應中發現多個「Access-Control-Allow-Origin」響應頭。您可以使用curl在瀏覽器之外進行測試,如下所示:'curl -i -H「原點:http://sitethiserrorisoccurringon.com」http:// myexamplefeed.com/feed/23213「 – sideshowbarker

+1

錯誤消息的區別只是因爲Chrome在嘗試使用它之前對Access-Control-Allow-Origin標頭值進行了驗證檢查,而Firefox目前不執行任何此類檢查,而只是試圖對標頭值進行文字匹配(如果它有多個令牌永遠不會匹配任何東西)。 – sideshowbarker

回答

1

嘗試用:

<IfModule mod_headers.c> 
Header set Access-Control-Allow-Origin "*" 
</IfModule> 
+0

同樣的錯誤。它必須是Apache設置的方式,因爲這個.htaccess文件以前工作得很好。 smh – symlink

+0

請看我的更新。 Chrome中出現不同的錯誤。 – symlink

0

我很抱歉,但使用多個值,訪問控制允許來源中不能包含。要麼使用通配符「*」要麼使用單個域。

另一種方法是做一個小腳本,並根據請求的來源更改該值,並將其與可用域列表進行比較。

相關問題