Chrome etag 总是显示 200 ok 但 curl 得到 304 未修改

Posted

技术标签:

【中文标题】Chrome etag 总是显示 200 ok 但 curl 得到 304 未修改【英文标题】:Chrome etag always show 200 ok but curl get the 304 not modified 【发布时间】:2022-01-06 22:21:23 【问题描述】:

有两张图片,第一张是在浏览器中发送请求,etag 值始终相同,http 状态始终为 200 ok,基于 http etag stretegy,我会得到此请求中未修改的 304。然后让我怀疑的是,当我将请求复制为 curl 在 bash 中运行时,它起作用了,服务器返回正确 304 未修改。

我的服务器端是Spring Boot,相关代码是

  @Bean
  fun shallowEtagHeaderFilter(): ShallowEtagHeaderFilter? 
    return ShallowEtagHeaderFilter()
  

前端是和axios反应,相关代码是:

import axios from "axios";

const request = axios.create( 
  baseURL: 'http://localhost:8082',
  timeout: 10000,
  withCredentials: true
)

export default request

在线等待您的回复,感谢您的阅读。

【问题讨论】:

【参考方案1】:

点击Response Headers部分的View source按钮,可能会看到HTTP/1.1 304 Not Modified。

我不知道为什么 Chrome 在 General 部分显示状态码 200。

类似问题:Why Chrome Dev Tool shows a 200 status code instead of 304

我在 Firefox 中尝试了我的代码,状态码是 304。

【讨论】:

以上是关于Chrome etag 总是显示 200 ok 但 curl 得到 304 未修改的主要内容,如果未能解决你的问题,请参考以下文章