首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CORS请求的304 Not Modified响应是否应该包含CORS头部?

CORS请求的304 Not Modified响应是否应该包含CORS头部?
EN

Stack Overflow用户
提问于 2021-05-28 06:13:17
回答 1查看 98关注 0票数 2

假设客户端发出了读取对象的跨域请求,该请求通过了,客户端缓存了结果。现在,客户端发出读取对象的新请求,之前的结果仍然缓存在浏览器中。

客户端发出以下请求:

代码语言:javascript
复制
GET /pony.png HTTP/1.1

Host: server.com
Origin: field.com
If-None-Match: "etag-abcd"

现在,假设"etag-abcd“对对象有效。服务器回复

代码语言:javascript
复制
HTTP/1.1 304 Not Modified

Etag: "etag-abcd"
Date: Tue, ...
Expires: Wed, ...

如果这是一个有效的跨域请求,服务器是否必须提供适当的Access-Control-Allow-Origin和其他报头?或者,客户端是否有义务遵守CORS标头,这些标头将与原始的缓存结果一起出现?

The Fetch standard相当复杂,但它包含类似于"As the CORS check is not be applied to be applied to response As status is 304 or 407...“这样的短语。这让我怀疑新的CORS头在304响应中是不必要的。

另一方面,我对§4.6,步骤10.4的阅读表明,304响应中的标头优先,甚至替换原始GET响应的标头中的任何缓存结果。

EN

回答 1

Stack Overflow用户

发布于 2021-05-28 13:29:08

是的,HTTP-network-or-cache fetch确实处理了304响应,但它最终返回了更新后的存储响应,在HTTP fetch中对该响应执行CORS检查。因此,对于典型的304,不需要CORS报头,因为它们已经存在于存储的响应中。

有一些边缘情况:

  1. 即使客户端不执行验证请求,服务器也可能返回304响应。在这种情况下,它将必须具有CORS报头,因为CORS检查将在304响应上执行(并且不是用304响应更新的存储响应)。
  2. 304响应可以更新CORS报头。(我不确定我们是否有足够的测试覆盖率来应对这种情况。)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67730604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档