From 83c4205d0f10b8f0ba6528286ba6dd48a61dc624 Mon Sep 17 00:00:00 2001 From: "Dr.XYZ" Date: Mon, 13 Jan 2025 11:22:22 +0800 Subject: [PATCH] [zh-TW]: update HTTP Header "Accept" (#25351) Co-authored-by: Jason Ren <40999116+jasonren0403@users.noreply.github.com> --- files/zh-tw/web/http/headers/accept/index.md | 69 ++++++++++++++------ 1 file changed, 49 insertions(+), 20 deletions(-) diff --git a/files/zh-tw/web/http/headers/accept/index.md b/files/zh-tw/web/http/headers/accept/index.md index c23068dc272eab..2c13d4c9c6cf78 100644 --- a/files/zh-tw/web/http/headers/accept/index.md +++ b/files/zh-tw/web/http/headers/accept/index.md @@ -2,19 +2,20 @@ title: Accept slug: Web/HTTP/Headers/Accept l10n: - sourceCommit: 7aab76c49ae49d606b4958f8dc8cd1269fb7b9b6 + sourceCommit: f341bd4728d3448faf6b9fc3b45980c35c067f25 --- {{HTTPSidebar}} -**`Accept`** HTTP 請求標頭表示用戶端能夠理解的內容類型,表達為 [MIME 類型](/zh-TW/docs/Web/HTTP/MIME_types)。伺服器使用[內容協商](/zh-TW/docs/Web/HTTP/Content_negotiation)從提案中選擇一個並通過 {{HTTPHeader("Content-Type")}} 回應標頭通知客戶端選擇。瀏覽器根據請求的上下文設置此標頭的必要值。例如,瀏覽器在擷取 CSS 樣式表、圖片、影片或腳本時,在請求中使用不同的值。 +HTTP **`Accept`** {{Glossary("request header", "請求標頭")}}和{{Glossary("response header", "回應標頭")}}表示發送者能夠理解的內容類型,以 [MIME 類型](/zh-TW/docs/Web/HTTP/MIME_types)表示。在請求中,伺服器使用[內容協商](/zh-TW/docs/Web/HTTP/Content_negotiation)選擇其中一個提案,並使用 {{HTTPHeader("Content-Type")}} 回應標頭通知用戶選擇的內容類型。在回應中,它提供伺服器能夠理解的內容類型訊息,以便在後續對資源的請求中使用該內容類型。 + +瀏覽器根據請求的上下文設置此標頭的必要值。例如,瀏覽器在請求 CSS 樣式表、圖片、視訊或腳本時使用不同的值。 - - + @@ -24,46 +25,73 @@ l10n: {{Glossary("CORS-safelisted response header", "CORS 安全清單回應標頭")}}
標頭類型{{Glossary("Response header", "回應標頭")}}
{{Glossary("Request header", "請求標頭")}}、{{Glossary("Response header", "回應標頭")}}
{{Glossary("Forbidden header name", "禁止修改的標頭")}} - 是,附加限制為值不能包含不安全的 CORS 請求標頭字節:0x00-0x1F(除了 0x09(HT))、"():<>?@[\]{} 和 0x7F(DEL)。 + 是
+\* 值不能包含 [CORS 不安全請求標頭字元](https://fetch.spec.whatwg.org/#cors-unsafe-request-header-byte),包括 `"():<>?@[\]{},`,刪除 `0x7F`,以及控制字元 `0x00` 到 `0x19`(除了 Tab `0x09`)。 + ## 語法 ```http -Accept: / -Accept: /* +Accept: / +Accept: /* Accept: */* -// 多種類型,以品質值語法加權: +// 多種類型,以品質值語法加權 Accept: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, */*;q=0.8 ``` ## 指令 -- `/` - - : 單一、精確的 [MIME 類型](/zh-TW/docs/Web/HTTP/MIME_types),如 `text/html`。 -- `/*` - - : 一個 MIME 類型,但沒有子類型。`image/*` 對應於 `image/png`、`image/svg`、`image/gif` 和其他圖片類型。 +- `/` + - : 單一、精確的[媒體類型](/zh-TW/docs/Web/HTTP/MIME_types),如 `text/html`。 +- `/*` + - : 沒有子類型的媒體類型。例如,`image/*` 對應於 `image/png`、`image/svg`、`image/gif` 和其他圖片類型。 - `*/*` - - : 任何 MIME 類型 + - : 任何媒體類型。 - `;q=`(q 因子加權) - - : 使用相對[品質值](/zh-TW/docs/Glossary/Quality_values)表達的偏好排序中放置的值,稱為*權重*。 + - : 使用相對{{Glossary("quality values", "品質值")}}表示的偏好值,稱為*權重*。 ## 範例 -```http -Accept: text/html +### 使用預設的 Accept 請求標頭 -Accept: image/* +使用命令行工具如 [curl](https://curl.se/) 和 [wget](https://www.gnu.org/software/wget/) 發出的 HTTP 請求使用 `*/*` 作為預設的 `Accept` 值: -// General default +```http +GET / HTTP/1.1 +Host: example.com +User-Agent: curl/8.7.1 Accept: */* +``` + +瀏覽器導航通常具有以下 `Accept` 請求標頭值: -// Default for navigation requests -Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8 +```http +GET /en-US/ HTTP/2 +Host: developer.mozilla.org +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 +… +``` + +在接收到文件後,對 `developer.mozilla.org` 範例中的圖片請求的預設 `Accept` 值如下所示: + +```http +Accept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5 +``` + +### 配置 Accept 請求標頭以獲取 JSON 回應 + +涉及 API 互動的系統通常請求 `application/json` 回應。以下是一個 {{HTTPMethod("GET")}} 請求的範例,其中用戶特別請求 JSON 回應: + +```http +GET /users/123 HTTP/1.1 +Host: example.com +Authorization: Bearer abcd123 +Accept: application/json ``` ## 規範 @@ -78,5 +106,6 @@ Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8 - HTTP [內容協商](/zh-TW/docs/Web/HTTP/Content_negotiation) - [默認 Accept 值列表](/zh-TW/docs/Web/HTTP/Content_negotiation/List_of_default_Accept_values) +- [CORS 安全清單請求標頭限制](/zh-TW/docs/Glossary/CORS-safelisted_request_header#additional_restrictions) - 具有內容協商結果的標頭:{{HTTPHeader("Content-Type")}} - 其他類似的標頭:{{HTTPHeader("TE")}}、{{HTTPHeader("Accept-Encoding")}}、{{HTTPHeader("Accept-Language")}}