此頁面由社群從英文翻譯而來。了解更多並加入 MDN Web Docs 社群。
Content-Type 標頭
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
HTTPContent-Type表示標頭用於指示資源在套用任何內容編碼之前的原始媒體類型。
在回應中,Content-Type 標頭會告知用戶端回傳資料的媒體類型。在請求中(例如POST 或PUT),用戶端使用Content-Type 標頭來指定傳送給伺服器的內容類型。如果伺服器的實作或組態對內容類型處理很嚴格,可能會回傳415 用戶端錯誤回應。
Content-Type 標頭與Content-Encoding 的不同之處在於,Content-Encoding 可幫助接收者了解如何將資料解碼回其原始形式。
備註:如果瀏覽器對回應執行MIME 嗅探(或內容嗅探),此值可能會被忽略。為防止瀏覽器使用 MIME 嗅探,請將X-Content-Type-Options 標頭值設為nosniff。更多詳細資訊請參見MIME 類型驗證。
* 值不能包含CORS 不安全的請求標頭位元組:"():<>?@[\]{},、Delete0x7F 以及0x00 到0x19 的控制字元(Tab0x09 除外)。其解析後的值(忽略參數)的媒體類型也必須是application/x-www-form-urlencoded、multipart/form-data 或text/plain 之一。
In this article
語法
Content-Type: <media-type>
例如:
Content-Type: text/html; charset=utf-8Content-Type: multipart/form-data; boundary=ExampleBoundaryString指令
<media-type>資源或資料的媒體類型。可包含以下參數:
charset:表示使用的字元編碼標準。該值不區分大小寫,但建議使用小寫。boundary:對於多部分實體,boundary參數是必需的。它用於劃定訊息多個部分的邊界。該值由 1 到 70 個字元組成(不以空白結尾),這些字元在不同系統(例如電子郵件閘道)的上下文中被認為是穩健的。通常,標頭邊界在請求主體中會以兩個破折號為前綴,而最後的邊界末尾會附加兩個破折號。
範例
>提供具有正確內容類型的資產
在以下兩個範例回應中,JavaScript 和 CSS 資產分別使用text/javascript 和text/css 提供。為這些資源設定正確的內容類型有助於瀏覽器更安全、更高效地處理它們。更多資訊請參見正確設定伺服器 MIME 類型。
HTTP/1.1 200content-encoding: brcontent-type: text/javascript; charset=utf-8vary: Accept-Encodingdate: Fri, 21 Jun 2024 14:02:25 GMTcontent-length: 2978const videoPlayer=document.getElementById...HTTP/3 200server: nginxdate: Wed, 24 Jul 2024 16:53:02 GMTcontent-type: text/cssvary: Accept-Encodingcontent-encoding: br.super-container{clear:both;max-width:100%}...多部分表單中的Content-Type
在POST 請求中,來自 HTML 表單提交的Content-Type 由<form> 元素上的enctype 屬性指定。
<form action="/foo" method="post" enctype="multipart/form-data"> <input type="text" name="description" value="描述輸入值" /> <input type="file" name="myFile" /> <button type="submit">提交</button></form>請求看起來像下面的範例,為簡潔起見省略了一些標頭。在請求中,使用ExampleBoundaryString 的邊界是為了說明,但在實務上,瀏覽器會建立一個更像---------------------------1003363413119651595289485765 的字串。
POST /foo HTTP/1.1Content-Length: 68137Content-Type: multipart/form-data; boundary=ExampleBoundaryString--ExampleBoundaryStringContent-Disposition: form-data; name="description"描述輸入值--ExampleBoundaryStringContent-Disposition: form-data; name="myFile"; filename="foo.txt"Content-Type: text/plain[使用者選擇的 foo.txt 檔案內容]--ExampleBoundaryString--URL 編碼表單提交中的Content-Type
當表單不涉及檔案上傳且使用較簡單的欄位時,URL 編碼的表單可能更方便,其中表單資料包含在請求主體中:
<form action="/submit" method="post"> <label for="comment">評論:</label> <input type="text" name="comment" value="你好!" /> <button type="submit">提交</button></form>POST /submit HTTP/1.1Host: example.comContent-Type: application/x-www-form-urlencodedContent-Length: 17comment=你好!使用 JSON 的 REST API 中的Content-Type
許多REST API 使用application/json 作為內容類型,這對於機器對機器的通訊或程式化互動很方便。以下範例顯示了一個201 Created 回應,展示了成功請求的結果:
HTTP/1.1 201 CreatedContent-Type: application/json{ "message": "新使用者已建立", "user": { "id": 123, "firstName": "Paul", "lastName": "Klee", "email": "p.klee@example.com" }}規範
| Specification |
|---|
| HTTP Semantics> # status.206> |
| HTTP Semantics> # field.content-type> |