乐闻世界logo
搜索文章和话题

What is the function of the " Vary : Accept" HTTP header?

1 个月前提问
1 个月前修改
浏览次数13

1个答案

1

Vary: Accept HTTP头字段是用来指示给定的HTTP响应是基于请求头中的哪些内容来进行内容协商的。更具体地说,Vary: Accept 指示响应的选择基于请求的Accept头,这个头部描述了客户端期望接收的媒体类型。

功能

当服务器提供多种表示同一资源的方式时,服务器可以根据请求中的Accept头部来决定返回哪种类型的内容。例如,一个资源可能有JSON和XML两种格式,服务器会根据请求头中的Accept值来决定返回哪种格式的数据。

缓存作用

Vary: Accept 对HTTP缓存非常重要。它告诉缓存机制,响应缓存的有效性取决于Accept头部的值。这意味着,如果一个缓存服务器先前缓存了一个对应于Accept: application/json的请求的响应,当另一个请求到达并带有Accept: application/xml头时,缓存服务器应该认识到这两个请求需要不同的响应版本,并且不应该将先前的响应提供给需要XML响应的请求。

示例场景

假设有一个API端点 /api/data,它可以返回JSON或XML格式的数据。当第一个客户端发送请求 GET /api/data 与头部 Accept: application/json时,服务器检测到Accept头部,返回JSON格式的数据,并在响应的HTTP头部中包含Vary: Accept。这样,任何缓存服务都会理解,该响应只对请求JSON格式的后续请求有效。

如果接下来另一个客户端请求 GET /api/data 但头部是 Accept: application/xml,即使URL相同,缓存也知道应基于Accept头的不同值提供不同的响应,或者从服务器获取正确格式的新数据。

通过这种方式,Vary: Accept确保了正确版本的内容被适当地存储和服务,从而优化了网络资源的使用并提高了用户体验。

2024年8月5日 01:08 回复

你的答案