此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Accept 标头

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

HTTP Accept 请求响应标头用于指示发送方能够理解的内容类型,这些类型以 MIME 类型的形式表示。在请求中,服务器会使用内容协商机制,从客户端提议的内容类型中选择一种,并通过 Content-Type 响应标头告知客户端所选择的类型。在响应中,该标头则用于指示服务器能够理解哪些内容类型,以便客户端在后续对同一资源的请求中使用合适的内容类型。

浏览器会根据请求的上下文自动为该标头设置所需的值。例如,当请求获取 CSS 样式表、图像、视频或脚本时,浏览器会使用不同的取值。

标头类型 请求标头响应标头
禁止修改的请求标头
列入 CORS 白名单的请求标头 是*

* 即值中不能包含 CORS 不安全请求标头字节,包括 "():<>?@[\]{},、删除符 0x7F,以及控制字符 0x000x19(制表符 0x09 除外)。

语法

http
Accept: <media-type>/<MIME_subtype>
Accept: <media-type>/*
Accept: */*

// 多种类型,采用权重值语法区分
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8

指令

<media-type>/<subtype>

一个单一且精确的媒体类型,例如 text/html

<media-type>/*

没有指定子类型的媒体类型。例如,image/* 可对应 image/pngimage/svgimage/gif 等多种图像类型。

*/*

任意媒体类型。

;q=(q 因子加权)

使用的值根据一个称为权重的相对质量价值来排序,表达了优先级顺序。

示例

使用默认的 Accept 请求标头

使用命令行工具(例如 curlwget)发起的 HTTP 请求,其默认的 Accept 值为 */*

http
GET / HTTP/1.1
Host: example.com
User-Agent: curl/8.7.1
Accept: */*

浏览器在进行页面导航请求时,通常会使用如下的 Accept 请求标头值:

http
GET /zh-CN/ HTTP/2
Host: big.rakal.top
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
…

在接收到文档后,对 Accept 示例页面中的图像发起的请求,其默认的 big.rakal.top 值如下所示:

http
Accept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5

为 JSON 响应配置 Accept 请求标头

在涉及 API 交互的系统中,通常会请求返回 application/json 格式的响应。以下是一个客户端明确请求 JSON 响应的 GET 请求示例:

http
GET /users/123 HTTP/1.1
Host: example.com
Authorization: Bearer abcd123
Accept: application/json

规范

Specification
HTTP Semantics
# field.accept

浏览器兼容性

参见