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-Languagenavigator.languages 可能不包括用戶偏好的完整列表。例如,在 Safari(永遠)和 Chrome 的無痕模式中僅列出一種語言。

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

當伺服器無法提供匹配語言的內容時,可能會返回 406 Not Acceptable 錯誤碼,但這種情況很少實現。伺服器通常會忽略 Accept-Language 標頭,並在這種情況下發送最合適的資源以提供更好的用戶體驗。

標頭類型 請求標頭
禁止修改的標頭
CORS 安全清單請求標頭 是*。

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

語法

http
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-USfr-CA)或使用的字母類型(如 sr-Latn)。其他變體,如正字法類型(de-DE-1996),通常不在此標頭的上下文中使用。

*(萬用字元)

任何不匹配 Accept-Language 字段中其他語言的語言。

;q=(q 因子加權)

任何值按相對品質值表示的偏好順序排列。品質值默認為 1

範例

使用 Accept-Language 標頭

以下請求偏好德語,使用 de 基本語言:

http
Accept-Language: de

在 Accept-Language 中使用品質值

以下請求表示對丹麥語的偏好更強,但以低優先級接受英式英語和其他類型的英語:

http
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 GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Accept-Language

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

參見