Accept-Language
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
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: *
// 多種語言,使用品質值語法加權:
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 因子加權)-
任何值按相對品質值表示的偏好順序排列。品質值默認為
1
。
範例
使用 Accept-Language 標頭
以下請求偏好德語,使用 de
基本語言:
Accept-Language: de
在 Accept-Language 中使用品質值
以下請求表示對丹麥語的偏好更強,但以低優先級接受英式英語和其他類型的英語:
Accept-Language: da, en-gb;q=0.8, en;q=0.7
規範
Specification |
---|
HTTP Semantics # field.accept-language |
瀏覽器相容性
Report problems with this compatibility data on GitHubdesktop | mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Accept-Language |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
參見
- HTTP 內容協商
- 協商結果的標頭:
Content-Language
- 其他類似標頭:
TE
、Accept-Encoding
、Accept