Accept-Language 頭部

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

HTTP Accept-Language 請求頭指示客戶端首選的自然語言和區域設定。伺服器使用內容協商來選擇其中一個提議,並透過 Content-Language 響應頭告知客戶端其選擇。瀏覽器根據其活動使用者介面語言設定此頭部所需的值。使用者還可以透過瀏覽器設定配置其他首選語言。

Accept-Language 頭部通常列出與 navigator.languages 屬性相同的區域設定,且 q 值(質量值)遞減。一些瀏覽器,如 Chrome 和 Safari,會在 Accept-Language 中新增僅限語言的備用標籤。例如,當 navigator.languages["en-US", "zh-CN"] 時,Accept-Language 可能為 en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7。出於隱私目的(減少指紋識別),Accept-Languagenavigator.languages 可能都不會包含完整的使用者偏好列表。例如,在 Safari(總是如此)和 Chrome 的無痕模式下,只列出一種語言。

當伺服器無法透過其他方式(例如,使用依賴於明確使用者決策的特定 URL)確定目標內容語言時,此頭部可作為提示。伺服器絕不應覆蓋明確的使用者語言選擇。Accept-Language 的內容通常不在使用者控制範圍內(例如,旅行時)。使用者也可能希望訪問與使用者介面語言不同的頁面。

當無法提供匹配語言的內容時,伺服器可能會返回 406 Not Acceptable 錯誤程式碼,但這很少實現。在這種情況下,伺服器通常會忽略 Accept-Language 頭部,而是傳送一個成功的響應,其中包含最合適的資源,以提供更好的使用者體驗。

頭型別 請求頭
禁止請求頭
CORS 安全列表請求頭 是*

* 值只能是 0-9A-Za-z、空格或字元 *,-.;=

語法

http
Accept-Language: <language>
Accept-Language: *

// Multiple types, weighted with the quality value syntax:
Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5

指令

<language>

一個語言標籤(有時被稱為“區域設定識別符號”)。它由一個 2-3 個字母的基礎語言標籤組成,表示一種語言,後面可選地跟著由 - 分隔的附加子標籤。最常見的額外資訊是國家或地區變體(如 en-USfr-CA)或要使用的字母型別(如 sr-Latn)。其他變體,如拼寫型別(de-DE-1996),通常不在此頭部的上下文中使​​用。

* (萬用字元)

Accept-Language 欄位中不存在的其他任何語言都未匹配的語言。

;q=(q-factor 權重)

使用相對質量值(稱為權重)表示偏好順序的任何值。質量值預設為 1

示例

使用 Accept-Language 頭部

以下請求偏好使用 de 基礎語言的德語

http
Accept-Language: de

在 Accept-Language 中使用質量值

以下請求表明對丹麥語有更強的偏好,但以較低的優先順序接受英式英語和其他型別的英語

http
Accept-Language: da, en-gb;q=0.8, en;q=0.7

規範

規範
HTTP 語義
# field.accept-language

瀏覽器相容性

另見