Content-Type 標頭
HTTP Content-Type 表示標頭用於指示資源在應用任何內容編碼之前的原始媒體型別。
在響應中,Content-Type 標頭通知客戶端返回資料的媒體型別。在諸如 POST 或 PUT 的請求中,客戶端使用 Content-Type 標頭指定傳送到伺服器的內容型別。如果伺服器實現或配置對內容型別處理嚴格,則可能會返回 415 客戶端錯誤響應。
Content-Type 標頭與 Content-Encoding 不同,Content-Encoding 幫助接收方瞭解如何將資料解碼為原始形式。
注意:如果瀏覽器對響應執行MIME 嗅探(或內容嗅探),則此值可能會被忽略。為了防止瀏覽器使用 MIME 嗅探,請將 X-Content-Type-Options 標頭值設定為 nosniff。有關更多詳細資訊,請參閱MIME 型別驗證。
| 頭型別 | 表示形式頭 |
|---|---|
| 禁止請求頭 | 否 |
| CORS-safelisted 響應頭 | 是 |
| CORS 安全列表請求頭 | 是* |
* 值不能包含CORS 不安全的請求標頭位元組:"():<>?@[\]{},、刪除 0x7F 以及控制字元 0x00 到 0x19(Tab 0x09 除外)。它還需要具有其解析值的媒體型別(忽略引數)為 application/x-www-form-urlencoded、multipart/form-data 或 text/plain。
語法
Content-Type: <media-type>
例如
Content-Type: text/html; charset=utf-8
Content-Type: multipart/form-data; boundary=ExampleBoundaryString
指令
<media-type>-
資源或資料的媒體型別。可能包含以下引數
charset:指示使用的字元編碼標準。該值不區分大小寫,但首選小寫。boundary:對於多部分實體,boundary引數是必需的。它用於劃分訊息多個部分的邊界。該值由 1 到 70 個字元組成(不能以空格結尾),這些字元在不同系統(例如電子郵件閘道器)的上下文中已知是穩健的。通常,請求正文中的標頭邊界前面有兩個破折號,最終邊界末尾附加兩個破折號。
示例
使用正確的內容型別提供資產
在以下兩個示例響應中,JavaScript 和 CSS 資產分別使用 text/javascript 和 text/css 提供。這些資源的正確內容型別有助於瀏覽器更安全、更高效地處理它們。有關更多資訊,請參閱正確配置伺服器 MIME 型別。
HTTP/1.1 200
content-encoding: br
content-type: text/javascript; charset=utf-8
vary: Accept-Encoding
date: Fri, 21 Jun 2024 14:02:25 GMT
content-length: 2978
const videoPlayer=document.getElementById...
HTTP/3 200
server: nginx
date: Wed, 24 Jul 2024 16:53:02 GMT
content-type: text/css
vary: Accept-Encoding
content-encoding: br
.super-container{clear:both;max-width:100%}...
多部分表單中的 Content-Type
在 HTML 表單提交產生的 POST 請求中,請求的 Content-Type 由 <form> 元素的 enctype 屬性指定。
<form action="/foo" method="post" enctype="multipart/form-data">
<input type="text" name="description" value="Description input value" />
<input type="file" name="myFile" />
<button type="submit">Submit</button>
</form>
請求看起來像以下示例,為簡潔起見省略了一些標頭。在請求中,為說明目的使用了 ExampleBoundaryString 邊界,但實際上,瀏覽器會建立更像 ---------------------------1003363413119651595289485765 這樣的字串。
POST /foo HTTP/1.1
Content-Length: 68137
Content-Type: multipart/form-data; boundary=ExampleBoundaryString
--ExampleBoundaryString
Content-Disposition: form-data; name="description"
Description input value
--ExampleBoundaryString
Content-Disposition: form-data; name="myFile"; filename="foo.txt"
Content-Type: text/plain
[content of the file foo.txt chosen by the user]
--ExampleBoundaryString--
URL 編碼表單提交中的 Content-Type
當表單不涉及檔案上傳且使用更簡單的欄位時,URL 編碼表單可能更方便,其中表單資料包含在請求正文中
<form action="/submit" method="post">
<label for="comment">Comment:</label>
<input type="text" id="comment" name="comment" value="Hello!" />
<button type="submit">Submit</button>
</form>
POST /submit HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
comment=Hello!
使用 JSON 的 REST API 中的 Content-Type
許多 REST API 使用 application/json 作為內容型別,這對於機器到機器通訊或程式化互動很方便。以下示例顯示了一個 201 Created 響應,顯示了成功請求的結果
HTTP/1.1 201 Created
Content-Type: application/json
{
"message": "New user created",
"user": {
"id": 123,
"firstName": "Paul",
"lastName": "Klee",
"email": "p.klee@example.com"
}
}
規範
| 規範 |
|---|
| HTTP 語義 # status.206 |
| HTTP 語義 # field.content-type |
瀏覽器相容性
載入中…