簡體   English   中英

HTTP“Content-Type”標頭的所有可能值是什么?

[英]What are all the possible values for HTTP "Content-Type" header?

在將Content-Type標頭值傳遞給 HTTP 請求之前,我必須對其進行驗證。

是否有針對Content-Type所有可能值的特定列表?

否則,有沒有辦法在 HTTP 請求中使用它之前驗證內容類型?

您可以在此處找到每種內容類型: http : //www.iana.org/assignments/media-types/media-types.xhtml

最常見的類型是:

  1. 類型應用

    application/java-archive application/EDI-X12 application/EDIFACT application/javascript application/octet-stream application/ogg application/pdf application/xhtml+xml application/x-shockwave-flash application/json application/ld+json application/xml application/zip application/x-www-form-urlencoded
  2. 輸入音頻

    audio/mpeg audio/x-ms-wma audio/vnd.rn-realaudio audio/x-wav
  3. 輸入圖片

    image/gif image/jpeg image/png image/tiff image/vnd.microsoft.icon image/x-icon image/vnd.djvu image/svg+xml
  4. 輸入多部分

    multipart/mixed multipart/alternative multipart/related (using by MHTML (HTML mail).) multipart/form-data
  5. 輸入文字

    text/css text/csv text/html text/javascript (obsolete) text/plain text/xml
  6. 輸入視頻

    video/mpeg video/mp4 video/quicktime video/x-ms-wmv video/x-msvideo video/x-flv video/webm
  7. 輸入 vnd :

     application/vnd.android.package-archive application/vnd.oasis.opendocument.text application/vnd.oasis.opendocument.spreadsheet application/vnd.oasis.opendocument.presentation application/vnd.oasis.opendocument.graphics application/vnd.ms-excel application/vnd.openxmlformats-officedocument.spreadsheetml.sheet application/vnd.ms-powerpoint application/vnd.openxmlformats-officedocument.presentationml.presentation application/msword application/vnd.openxmlformats-officedocument.wordprocessingml.document application/vnd.mozilla.xul+xml

RFC 1341 中所定義

在 RFC 822 的擴展 BNF 表示法中,Content-Type 頭字段值定義如下:

內容類型 := 類型 "/" 子類型 *[";" 范圍]

類型:=“應用程序”/“音頻”/“圖像”/“消息”/“多部分”/“文本”/“視頻”/x-token

x-token := < 后跟兩個字符“X-”,中間沒有空格,任何標記 >

子類型:=令牌

參數:= 屬性“=”值

屬性 := 令牌

值 := 標記 / 帶引號的字符串

令牌:= 1*

tspecials := "(" / ")" / "<" / ">" / "@" ; 必須在 / "," / ";" / ":" / "\\" / <"> ; 帶引號的字符串, / "/" / "[" / "]" / "?" / "." ; 使用 / "=" ; 參數值

以及可以跟隨它的已知 MIME 類型列表(或者,正如 Joe 所說, IANA 來源)。

正如您所看到的,該列表太大了,您無法針對所有這些列表進行驗證。 您可以做的是針對通用格式和type屬性進行驗證以確保它是正確的(選項集很小)並假設它后面的內容是正確的(當然還可以捕獲您在放置時可能遇到的任何異常實際使用)。

還要注意上面的評論:

如果出於任何原因要使用另一種主要類型,則必須為其指定一個以“X-”開頭的名稱,以表明其非標准狀態並避免與未來的正式名稱發生任何潛在沖突。

您會注意到很多HTTP 請求/響應都包含某種自定義的X-標頭,在驗證類型時請記住這一點。

我的目標是涵蓋可能的“內容類型”值的子集,您的問題似乎集中在識別已知的內容類型上。

@Jeroen RFC 1341 參考很棒,但是對於相當詳盡的列表,IANA 在此處保留了官方注冊媒體類型的網頁。

如果您使用的是 jaxrs 或任何其他,那么在發送請求之前會有一個名為 mediatype.User 攔截器的類,並將其與此進行比較。

有沒有可以接受所有類型的代碼片段

例如:像“*”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM