If-None-Match
我的默认 NGinx 安装会向具有匹配标头和未过期标头的请求返回 304 Not Modified 响应,If-Modified-Since
这是正确的行为,但 NGinx 还会将资源的内容添加到 304 响应中。有人会认为 NGinx 不会添加内容,而只是返回带有空主体的 304,向浏览器表明使用其缓存的资源就足够了。
出现这种行为有什么原因吗?我该如何禁用它?
答案1
您确定 NGINX 正在返回内容吗?
根据您查看响应的方式,这可能只是表面看起来的情况。
例如,当 Chrome 开发者工具从 NGINX 收到 304 时,它会显示内容,看起来就像是从 NGINX 发送的,但实际上只是被 Chrome 从缓存中检索。
您可以通过在 Chrome 开发工具中右键单击文件 -> “复制 -> 复制为 cURL”来尝试此操作。
在刚刚复制的内容的开头添加 -vv(例如curl -vv <your-url> -H 'HeaderKey: HeaderValue' <etc>
),然后在终端/shell 中执行。
您可能会发现它没有返回正文内容(即使它是 304)。然后,您可以仅使用 URL(curl -vv <your-url>
)尝试相同的请求,并查看没有 304 的正文。