304 在 apache 上使用 CORS

use*_*329 6 apache-2.4 cors

我有一个 REST API,它返回304 Not Modified某个请求的状态代码(具有 If-Modified-Since 标头)。问题是 apache2 软件在将响应发送到浏览器之前删除了任何 CORS 标头。

仅当状态代码为 时才会发生这种情况304。任何其他端点都适用于 CORS。所有的飞行前请求也很好用。

我在互联网上读到 Apache 这样做是为了符合某些规范,但我不敢相信带有 304 的 CORS 不应该在规范中工作。

有没有办法用 apache 实现这个?

更新:

我的 javascript 是

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://api.domain.com/api/endpoint?token='+localStorage.getItem('token'));
xhr.setRequestHeader("If-Modified-Since", "Mon, 11 Jan 2016 15:46:54 GMT");
xhr.send(null);
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“ http://xxx.domain.com ”。

Jay*_*yen 2

304 不需要包含 CORS 标头。浏览器应该看到 304 并使用缓存。

https://bz.apache.org/bugzilla/show_bug.cgi?id=51223#c1

CORS 不需要 304 上的这些标头,而且实际上浏览器在没有这些标头的情况下也可以工作。这是因为许多 304 是从无法更新以了解 CORS 的中间缓存生成的。

  • 好吧,这就是我的问题:“CORS 不需要 304 上的那些标头”。但是,当我执行请求时,Chrome 会显示“请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“http://xxxx.domain.com”。 (5认同)