HTTPQUERY
English

Accept

用法

Accept 头驱动内容协商。客户端发送一份按偏好排序的媒体类型列表,服务器从所请求资源的可用表示中选择最匹配的一个。

浏览器会根据请求上下文自动设置该头。导航请求通常请求 text/html,而图片元素则请求常见的图片格式。API 客户端通常发送 application/json 或 application/xml。

当服务器没有任何与列表中类型匹配的表示时,预期的响应是 406 Not Acceptable。而在实践中,许多服务器会忽略该头,转而返回默认表示。

注意

Accept 头不是必需的。省略该头意味着客户端接受任意媒体类型(/)。浏览器会以 / 作为回退发送,许多服务器则完全忽略 Accept,无论客户端偏好如何都返回固定的 Content-Type。

media-type/subtype

一个具体的媒体类型,例如 text/html 或 application/json。服务器将完整的 type/subtype 组合视为一个明确的偏好。

media-type/*

通配符子类型。image/* 表示接受任意图片格式,无论是 image/png、image/webp 还是 image/avif。

*/*

接受任意媒体类型。当没有其他类型匹配时,该通配符充当回退。

;q=(质量值)

一个介于 0 和 1 之间的权重,表示相对偏好。值越高表示偏好越强。省略时默认权重为 1.0。值为 0 表示该类型不可接受。

示例

浏览器请求 HTML 页面时会发送若干按质量值排序的媒体类型。服务器所支持的、权重最高的类型胜出。

Accept: text/html, application/xhtml+xml, */*;q=0.8

API 客户端请求 JSON 并以 XML 作为回退,会给 XML 分配较低的质量值。

Accept: application/json, application/xml;q=0.9

AI 智能体请求以 Markdown 格式返回页面以减少 token 消耗,并以 HTML 作为回退。

Accept: text/markdown, text/html;q=0.9

AI 智能体与内容协商

Cloudflare 等 CDN 提供商会在请求包含 Accept: text/markdown 时即时将 HTML 页面转换为 Markdown。这种转换可将 token 数量减少多达 80%,使内容协商成为面向基于 LLM 的智能体和爬虫的一项实用优化。

API 客户端请求结构化的错误响应时,会在常规内容类型之外使用 application/problem+json。服务器在出错时返回问题详情,成功时返回 JSON。

Accept: application/problem+json, application/json

一个列出多种文本格式并显式指定优先级的请求。text/html 携带默认权重 1.0,text/plain 以 0.9 紧随其后,其他任意文本格式为 0.8,其余一切为 0.7。

Accept: text/html, text/plain;q=0.9, text/*;q=0.8, */*;q=0.7

注意

当两个类型共享相同的质量值时,更具体的类型优先。如果 text/html 和 text/* 都携带权重 1.0,服务器会选择 text/html。