【发布时间】:2016-09-23 00:10:05
【问题描述】:
我有一个运行 apache 的服务器。 .htaccess 包含以下内容:
<IfModule mod_headers.c>
<FilesMatch "\.(eot|ttf|otf|woff|css)$">
Header add Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
为什么会这样
$.get('https://www.sarahlawrence.edu/_assets/v6/fonts/otama-text-regular/otamatextregular.eot')`
有效(在任何域的控制台中尝试),而
$.get('https://www.sarahlawrence.edu/_assets/v6/lib/icons.data.svg.css')
失败并出现此错误:
XMLHttpRequest 无法加载 https://www.sarahlawrence.edu/_assets/v6/lib/icons.data.svg.css。请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'https://whatever.com' 因此不允许访问。
我怎样才能让它工作?
【问题讨论】:
-
嗯,第二个没有返回 Access-Control-Allow-Origin,如错误消息所述。您确定 .htaccess 正确/工作正常吗?
-
@user2415266 是的,我相信 htaccess 工作正常,因为站点的其余部分按预期工作。第二个给你带来了什么?上面的错误消息来自 Chrome。 Firefox 给出“跨域请求被阻止:同源策略不允许读取位于sarahlawrence.edu/_assets/v6/lib/icons.data.svg.css 的远程资源。(原因:CORS 标头“Access-Control-Allow-Origin”缺失)。”
-
我很确定问题出在 FilesMatch 规则中的正则表达式,因为您的 css 文件被称为“icons.data.svg.css”,它不会被找到为“.css”跨度>
-
如果我正确读取正则表达式,它只会匹配以允许的扩展名结尾的字符串,因此前面的 icons.data.svg 不会是匹配的集市.. 只有最后的 .css 。 . 所以这对我来说看起来不错。
标签: javascript ajax .htaccess cors