Accept-Language 頭部
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-Language 和 navigator.languages 可能都不會包含完整的使用者偏好列表。例如,在 Safari(總是如此)和 Chrome 的無痕模式下,只列出一種語言。
當伺服器無法透過其他方式(例如,使用依賴於明確使用者決策的特定 URL)確定目標內容語言時,此頭部可作為提示。伺服器絕不應覆蓋明確的使用者語言選擇。Accept-Language 的內容通常不在使用者控制範圍內(例如,旅行時)。使用者也可能希望訪問與使用者介面語言不同的頁面。
當無法提供匹配語言的內容時,伺服器可能會返回 406 Not Acceptable 錯誤程式碼,但這很少實現。在這種情況下,伺服器通常會忽略 Accept-Language 頭部,而是傳送一個成功的響應,其中包含最合適的資源,以提供更好的使用者體驗。
| 頭型別 | 請求頭 |
|---|---|
| 禁止請求頭 | 否 |
| CORS 安全列表請求頭 | 是* |
* 值只能是 0-9、A-Z、a-z、空格或字元 *,-.;=。
語法
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-US或fr-CA)或要使用的字母型別(如sr-Latn)。其他變體,如拼寫型別(de-DE-1996),通常不在此頭部的上下文中使用。 *(萬用字元)-
Accept-Language欄位中不存在的其他任何語言都未匹配的語言。 ;q=(q-factor 權重)-
使用相對質量值(稱為權重)表示偏好順序的任何值。質量值預設為
1。
示例
使用 Accept-Language 頭部
以下請求偏好使用 de 基礎語言的德語
Accept-Language: de
在 Accept-Language 中使用質量值
以下請求表明對丹麥語有更強的偏好,但以較低的優先順序接受英式英語和其他型別的英語
Accept-Language: da, en-gb;q=0.8, en;q=0.7
規範
| 規範 |
|---|
| HTTP 語義 # field.accept-language |
瀏覽器相容性
載入中…
另見
- HTTP 內容協商
- 包含內容協商結果的頭部:
Content-Language - 其他類似頭部:
TE、Accept-Encoding、Accept