ajax304未修改收不到响应
ajax 304 not modified can't receive response
我有一个 API 来处理缓存控制。服务器将设置响应 header "last-modified" 并且来自浏览器的下一个请求将具有 If-modified-Since header.
但是,当我使用ajax请求API时,它不会自动设置If-modified-Since header。
而我在ajax请求header中设置了If-modified-Since,服务器响应304状态码。但是响应 body 是空的。
Is ajax need to manually to fulfill browser behavior about cache control?
有没有更好的解决方案?
我发现了一个类似的问题here。
对于 304 响应,响应 body 应该为空,这就是它的工作方式。 The protocol 状态:
The 304 response MUST NOT contain a message-body, and thus is always terminated by the first empty line after the header fields.
因此,如果您发送带有 If-modified-since
的请求并且不满足条件,您将不会收到响应 body(实际数据)。您基本上是在声明您拥有内容,并且只有在更新后才需要它。
尽量不要使用 If-Modified-Since
header 而是使用 Cache-control
header:
$.ajax({
...
headers: {
'Cache-Control': 'max-age=1000'
}
...
});
经过研究this终于解决了。
将请求 Header 设置为
'Cache-Control': 'max-age=0'
如果响应提供 Last-Modified header,下一个请求将自动设置 If-Modified-Since 且值相等。
304响应时,响应内容来自浏览器缓存。
我有一个 API 来处理缓存控制。服务器将设置响应 header "last-modified" 并且来自浏览器的下一个请求将具有 If-modified-Since header.
但是,当我使用ajax请求API时,它不会自动设置If-modified-Since header。 而我在ajax请求header中设置了If-modified-Since,服务器响应304状态码。但是响应 body 是空的。
Is ajax need to manually to fulfill browser behavior about cache control?
有没有更好的解决方案?
我发现了一个类似的问题here。
对于 304 响应,响应 body 应该为空,这就是它的工作方式。 The protocol 状态:
The 304 response MUST NOT contain a message-body, and thus is always terminated by the first empty line after the header fields.
因此,如果您发送带有 If-modified-since
的请求并且不满足条件,您将不会收到响应 body(实际数据)。您基本上是在声明您拥有内容,并且只有在更新后才需要它。
尽量不要使用 If-Modified-Since
header 而是使用 Cache-control
header:
$.ajax({
...
headers: {
'Cache-Control': 'max-age=1000'
}
...
});
经过研究this终于解决了。
将请求 Header 设置为
'Cache-Control': 'max-age=0'
如果响应提供 Last-Modified header,下一个请求将自动设置 If-Modified-Since 且值相等。
304响应时,响应内容来自浏览器缓存。