【问题标题】:Do the Fetch API and Axios see 304 responses as 200?Fetch API 和 Axios 是否将 304 响应视为 200?
【发布时间】:2020-10-04 06:49:01
【问题描述】:

我不知道它是否会,但如果我的服务器响应 HTTP 状态代码 304,Fetch API(特别是 response.ok)和 axios.get() 是否会将响应视为 200?

两者的文档都谈到如果响应代码在 200-299 范围内,则请求被视为成功,但显然 304 不在此范围内。

【问题讨论】:

  • 没有,但是如果重定向成功,那么他们会返回第二个请求的响应,其状态可以是2**
  • 这是个好问题。我试图根据这个 304 对“状态”做出决定,但我现在看到 axios 总是检索 200。

标签: axios fetch-api


【解决方案1】:

当浏览器发出带有If-MatchIf-Modified-Since 标头的GET 请求,而服务器以304 Not Modified 响应时,客户端只会将其视为200 OK

响应是从缓存而不是服务器提供的,它允许客户端(在您的情况下为 axios)不必了解 HTTP 缓存,但它仍然可以利用它。

我不知道当客户在没有前置条件的情况下发送请求并且仍然得到304 响应时会做什么。客户端不会有更早的缓存响应,所以这肯定会被“破坏”。我想你会得到一个错误,但我很想知道是什么。

【讨论】:

    【解决方案2】:

    不,他们都不会看到响应为 200。

    虽然axios.get 将返回一个promise 拒绝,但使用fetch API 时response.ok 的返回值将是falseresponse.redirected 将是true

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2023-02-02
      • 2016-09-09
      相关资源
      最近更新 更多