我有一个简单的AJAX请求,可以调用http://myexamplefeed.com/feed/23213
我刚将此网站移至新服务器,突然之间我收到了此错误:
阻止跨源请求:同源策略禁止读取 http://myexamplefeed.com/feed/23213处的远程资源。 (原因: CORS标题'Access-Control-Allow-Origin'与'(null)'不匹配。
问题是,在我的.htaccess文件中,我试图匹配*:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin: *
</IfModule>
<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
值不是null,我不能在.htaccess文件中更改它吗?
更新:那是在Firefox中。在Chrome中,我收到此消息:
'Access-Control-Allow-Origin'标头包含多个值'*, *',但只允许一个
答案 0 :(得分:2)
尝试:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
答案 1 :(得分:1)
这有点晚了,但对于那些想要支持多个域的人来说,这可以通过一些额外的配置来实现。我不建议在少数域之外这样做。这将适用于 Apache 2.4+
<IfModule mod_setenvif.c>
SetEnvIfExpr "(tolower(req('Origin')) == 'https://prod.someschool.edu')" isProd
SetEnvIfExpr "(tolower(req('Origin')) == 'https://dev.someschool.edu')" isDev
<IfModule mod_headers.c>
Header always set Access-Control-Allow-Origin "https://prod.someschool.edu" env=isProd
Header always set Access-Control-Allow-Origin "https://dev.someschool.edu" env=isDev
</IfModule>
</IfModule>
答案 2 :(得分:0)
对不起,但是不允许在Access-Control-Allow-Origin上使用多个值。要么使用通配符&#34; *&#34;或使用单个域名。
另一种方法是执行一个小脚本并根据请求的来源更改该值,并将其与可用域列表进行比较。