未设置 CORS 标头

Posted

技术标签:

【中文标题】未设置 CORS 标头【英文标题】:CORS Headers Not Being Set 【发布时间】:2013-09-11 18:04:57 【问题描述】:

我正在尝试从另一个域下载静态文件。在我的根目录中的 .htaccess 文件中:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Accept, If-Modified-Since, Origin"
Header set Access-Control-Allow-Methods "GET, OPTIONS"

这是浏览器下载资源两次的请求-响应周期:

GET /file HTTP/1.1
Host: www.example.com
Accept: application/json
Origin: http://www.mydomain.com

HTTP/1.1 200 OK
Date: Sat, 07 Sep 2013 21:01:35 GMT
Server: Apache
Last-Modified: Sat, 07 Sep 2013 20:14:45 GMT
Content-Length: 2
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Accept, If-Modified-Since, Origin
Access-Control-Allow-Methods: GET, OPTIONS
Content-Type: application/json

[]

GET /file HTTP/1.1
Host: www.example.com
Cache-Control: max-age=0
Accept: application/json
Origin: http://www.mydomain.com
If-Modified-Since: Sat, 07 Sep 2013 20:14:45 GMT

HTTP/1.1 304 Not Modified
Date: Sat, 07 Sep 2013 21:01:40 GMT
Server: Apache

第二次您可以看到,由于文件没有被修改,服务器以304 Not Modified 响应。为什么没有为第二个响应设置 CORS 标头?

【问题讨论】:

【参考方案1】:

这是一个 apache 错误,见下文

https://issues.apache.org/bugzilla/show_bug.cgi?id=51223

如果你有勇气的话,你可以用补丁重新编译 Apache....

【讨论】:

以上是关于未设置 CORS 标头的主要内容,如果未能解决你的问题,请参考以下文章

Express 中间件未设置 CORS 标头

Socket.io 未设置 CORS 标头

节点 JS CORS 模块未设置 Access-Control-Allow-Credentials 标头

未设置 CORS 标头 - 我可以请求图像 url,然后将其返回给自己吗?

在查询字符串中使用点 (".") 时未设置 CORS 标头

为啥没有在 CORS 未命中时设置“Vary: Origin”响应?