HTTP“ Content-Type”ヘッダーに可能なすべての値は何ですか?


270

Content-TypeHTTPリクエストに渡す前にヘッダー値を検証する必要があります。

のすべての可能な値の特定のリストはありますContent-Typeか?

それ以外の場合、HTTPリクエストで使用する前にコンテンツタイプを検証する方法はありますか?


9
有効なメディアタイプはIANAに登録されることになっています-現在のリストはiana.org/assignments/media-types/media-types.xhtmlで確認できますが、 このリストは時間とともに更新される可能があることに注意してください。固定の許可リストはありません。
ジョー


@Joe:「有効なメディアタイプはIANAに登録されることになっています」-待って、これはカスタムメディアタイプを意味します(カスタムクライアントアプリケーションによってのみ呼び出されるアプリケーション固有のWeb APIでのみ使用)まったく許可されていませんか?
またはMapper

1
@ORMapperは、「公式のリストはありますが、実際に他の人がたくさんいるのを見て驚くことはありません」と読みました。OPの質問に関して、「すべてのタイプ」を検証して検証しようとする場合、少なくともすべての登録されたタイプを検証する必要があります。追加のもので何をするかは、よりオープンエンドです。私の知る限り、カスタムタイプを登録する必要はありません。
Joe

問題の解決に最も役立つ答えを受け入れてください。それは将来の読者を助けます。回答が役に立たなかった場合は、その下にコメントを残してください。したがって、ポスターはそれらを適宜更新できます。読んで誰かが私の質問に答えるとき、私は何をすべき?もっと知りたい
Roshana Pitigala

回答:


255

ここですべてのコンテンツタイプを見つけることができます: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   
    

51

定義されている中でRFC 1341

RFC 822の拡張BNF表記では、Content-Typeヘッダーフィールド値は次のように定義されています。

Content-Type:=タイプ "/"サブタイプ* [";" パラメータ]

type:= "application" / "audio" / "image" / "message" / "multipart" / "text" / "video" / x-token

x-token:= <2つの文字「X-」の後に空白を入れずにトークンを続けた>

サブタイプ:=トークン

パラメータ:=属性 "="値

属性:=トークン

値:=トークン/引用文字列

トークン:= 1 *

tspecials:= "(" / ")" / "<" / ">" / "@"; / "、" / ";"にある必要があります / ":" / "\" / <">;引用符付き文字列、/" / "/" ["/"] "/"? "/"。 "; /" = "内で使用する;パラメータ値

そしてそれに従うことができる既知のMIMEタイプのリスト(または、Joeが述べたように、IANAソース)。

ご覧のとおり、リストは大きすぎてすべてに対して検証することはできません。あなたができることは、一般的なフォーマットとtype属性に対して検証してそれが正しいことを確認し(オプションのセットは小さい)、それに続くものが正しいと仮定するだけです(もちろん、それを置くときに発生する可能性のある例外をすべてキャッチします)実際の使用に)。

上記のコメントにも注意してください:

何らかの理由で別のプライマリタイプを使用する場合は、「X-」で始まる名前を付けて、その非標準のステータスを示し、将来の公式名との潜在的な競合を回避する必要があります。

多くのHTTP要求/応答には、X-自己定義されたある種のヘッダーが含まれていることに気づくでしょう。タイプを検証するときは、このことに留意してください。


RFC 1341はHTTPには関係ありません。
Julian Reschke 2014年

2
RFC 1341は、HTTPで使用されるContent-Typeヘッダーについて説明しています。それらは無関係であるとどの程度正確に言えますか?
Jeroen Vannevel

2
廃止され、何度も新しいドキュメントに置き換えられました。関連するのは、< greenbytes.de/tech/webdav/… >(および参照ドキュメント)のコメントです。
Julian Reschke 2014年

3

私は可能な「コンテンツタイプ」値のサブセットをカバーすることを目指していますが、あなたの質問は既知のコンテンツタイプの識別に焦点を当てているようです。

@Jeroen RFC 1341リファレンスは素晴らしいですが、かなり網羅的なリストとして、IANAは公式に登録されたメディアタイプのWebページをここに保持しています


これらは「既知の」メディアタイプ(つまり、「実際に」観察されたもののサンプル)ではなく、IANA登録手順を経たメディアタイプです。したがって、それらは正式に登録されています。これを指摘することが重要であることが
わかりまし

0

jaxrsなどを使用している場合は、リクエストを送信する前にmediatype.Userインターセプターと呼ばれるクラスがあり、これと比較されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.