コンテンツタイプの説明、つまりHTTPリクエストヘッダーのタイプ

コンテンツタイプの説明、つまりHTTPリクエストヘッダーのタイプ

コンテンツ タイプについて学ぶには、まずそれが何であるか、そして何に使用されるかを知る必要があります。

HTTP プロトコル (RFC2616) は、リクエスト/レスポンス モデルを採用しています。クライアントはサーバーにリクエストを送信します。リクエスト ヘッダーには、リクエスト メソッド、URI、プロトコル バージョン、およびリクエスト修飾子、クライアント情報、コンテンツを含む MIME のようなメッセージ構造が含まれます。サーバーは、メッセージ プロトコル バージョン、成功またはエラー コード、サーバー情報、エンティティ メタ情報、および可能なエンティティ コンテンツを含むステータス ラインで応答します。

通常、HTTP メッセージは、開始行、1 つ以上のヘッダー フィールド、ヘッダー フィールドのみで終わる空白行、およびオプションのメッセージ本文で構成されます。 HTTP ヘッダー フィールドには、一般ヘッダー、要求ヘッダー、応答ヘッダー、エンティティ ヘッダーの 4 つの部分が含まれます。各ヘッダー フィールドは、ドメイン名、コロン (:)、ドメイン値の 3 つの部分で構成されます。ドメイン名は大文字と小文字を区別しません。ドメイン値の前に任意の数のスペースを追加できます。ヘッダー フィールドは複数行に拡張できます。各行の先頭には、少なくとも 1 つのスペースまたはタブ文字を使用します。

要求メッセージと応答メッセージの両方にエンティティ情報を含めることができます。エンティティ情報は通常、エンティティ ヘッダー フィールドとエンティティで構成されます。エンティティ ヘッダー フィールドには、エンティティに関する元の情報が含まれます。エンティティ ヘッダーには、Allow、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、Expires、Last-Modified、および extension-header が含まれます。
Content-Type は返信メッセージの中で非常に重要な内容であり、後続のドキュメントの MIME タイプを示します。 Content-Type: [type]/[subtype]; パラメータ。たとえば、最も一般的なものは text/html です。これは、返されるコンテンツがテキスト タイプであり、テキストが HTML 形式であることを意味します。原則として、ブラウザは Content-Type に基づいて返されたメッセージ本文をどのように表示するかを決定します。

型は次の形式をとる

テキスト: 標準化された方法でテキスト情報を表すために使用されます。テキスト メッセージは、複数の文字セットや複数の形式で表現できます。

マルチパート: メッセージ本文の複数の部分を結合してメッセージを形成するために使用されます。これらの部分は異なるタイプのデータにすることができます。

アプリケーション: アプリケーション データまたはバイナリ データを転送するために使用されます。

メッセージ: 電子メール メッセージをパッケージ化するために使用されます。

画像: 静止画像データを送信するために使用されます。

オーディオ: オーディオまたは音声データを送信するために使用されます。

ビデオ: 動画像データを送信するために使用されます。オーディオと一緒に編集できるビデオデータ形式です。

サブタイプは、タイプの詳細な形式を指定するために使用されます。コンテンツ タイプ/サブタイプのペアのセットと、それに関連付けられたパラメータは、時間の経過とともに増加します。これらの値が秩序正しくオープンな方法で開発されることを保証するために、MIME はこれらの値を管理するための中央登録メカニズムとして Internet Assigned Numbers Authority (IANA) を使用します。

パラメータは追加情報を指定するために使用できますが、text/plain や text/htm などのテキスト エンコードの charset パラメータを指定するために使用されることが多いです。 MIME はタイプに基づいてデフォルトのサブタイプを定義します。クライアントがメッセージのサブタイプを判別できない場合、メッセージは処理のデフォルトのサブタイプとして扱われます。テキストのデフォルトは text/plain、アプリケーションのデフォルトは application/octet-stream、マルチパートはデフォルトで multipart/mixed として扱われます。 IE6 ブラウザの場合、Content-Type の型が実際のメッセージ本文の型と一致しない場合、コンテンツ内の型に基づいて実際の型を分析します。Content-Type に何が記述されているかに関係なく、JPG や GIF などの一般的な画像形式を正しく識別できます。
Content-Type で指定されたタイプがブラウザが直接開くことができるタイプである場合、ブラウザは直接そのコンテンツを開いて表示します。他のアプリケーションに関連付けられたタイプである場合は、レジストリでこのタイプの登録状態を調べる必要があります。確認せずに直接開くことが許可されている場合は、関連付けられたアプリケーションを直接呼び出してファイルを開きます。ただし、直接開くことが許可されていない場合は、開くかどうかを尋ねます。どのアプリケーションにも関連付けられていないタイプの場合、IE ブラウザではそのファイルを開く方法がわからないため、IE6 では XML として開こうとします。

ファイルをダウンロードしたい場合は、http ヘッダーに追加できます。

fprintf(ファイル、"Content-Disposition:attachment; ファイル名=\"%s\" \r\n", ファイル名);

テスト後、Web ページで最初に開かれた html、pdf、gif などのファイルは正常にダウンロードできます。

'hqx' => 'application/mac-binhex40',
'cpt' => 'application/mac-compactpro',
'doc' => 'application/msword',
'bin' => 'アプリケーション/オクテットストリーム'、
'dms' => 'アプリケーション/オクテットストリーム'、
'lha' => 'アプリケーション/オクテットストリーム'、
'lzh' => 'アプリケーション/オクテットストリーム'、
'exe' => 'アプリケーション/オクテットストリーム'、
'クラス' => 'アプリケーション/オクテットストリーム'、
'so' => 'アプリケーション/オクテットストリーム'、
'dll' => 'アプリケーション/オクテットストリーム',
'oda' => 'アプリケーション/oda'、
'pdf' => 'アプリケーション/pdf'、
'ai' => 'アプリケーション/ポストスクリプト'、
'eps' => 'アプリケーション/ポストスクリプト'、
'ps' => 'アプリケーション/ポストスクリプト'、
'smi' => 'アプリケーション/smil'、
'smil' => 'アプリケーション/smil'、
'mif' => 'application/vnd.mif',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',
'wbxml' => 'application/vnd.wap.wbxml',
'wmlc' => 'application/vnd.wap.wmlc',
'wmlsc' => 'application/vnd.wap.wmlscriptc',
'bcpio' => 'アプリケーション/x-bcpio'、
'vcd' => 'application/x-cdlink'、
'pgn' => 'application/x-chess-pgn',
'cpio' => 'アプリケーション/x-cpio'、
'csh' => 'application/x-csh'、
'dcr' => 'アプリケーション/x-director'、
'dir' => 'application/x-director',
'dxr' => 'アプリケーション/x-director'、
'dvi' => 'application/x-dvi'、
'spl' => 'application/x-futuresplash',
'gtar' => 'application/x-gtar'、
'hdf' => 'application/x-hdf'、
'js' => 'application/x-javascript',
'skp' => 'アプリケーション/x-koan'、
'skd' => 'アプリケーション/x-koan'、
'skt' => 'application/x-koan'、
'skm' => 'アプリケーション/x-koan'、
'ラテックス' => 'アプリケーション/x-ラテックス'、
'nc' => 'application/x-netcdf'、
'cdf' => 'application/x-netcdf',
'sh' => 'application/x-sh'、
'shar' => 'application/x-shar'、
'swf' => 'application/x-shockwave-flash'、
'sit' => 'application/x-stuffit'、
'sv4cpio' => 'application/x-sv4cpio'、
'sv4crc' => 'application/x-sv4crc'、
'tar' => 'application/x-tar'、
'tcl' => 'application/x-tcl'、
'tex' => 'application/x-tex',
'texinfo' => 'application/x-texinfo',
'texi' => 'application/x-texinfo',
't' => 'アプリケーション/x-troff'、
'tr' => 'application/x-troff'、
'roff' => 'application/x-troff'、
'man' => 'application/x-troff-man'、
'me' => 'application/x-troff-me'、
'ms' => 'application/x-troff-ms'、
'ustar' => 'application/x-ustar'、
'src' => 'application/x-wais-source',
'xhtml' => 'application/xhtml+xml'、
'xht' => 'application/xhtml+xml',
'zip' => 'アプリケーション/zip'、
'au' => 'オーディオ/基本'、
'snd' => 'オーディオ/基本'、
'mid' => 'オーディオ/MIDI'、
'midi' => 'オーディオ/midi'、
'kar' => 'オーディオ/MIDI'、
'mpga' => 'オーディオ/mpeg'、
'mp2' => 'オーディオ/mpeg'、
'mp3' => 'オーディオ/mpeg'、
'aif' => 'audio/x-aiff'、
'aiff' => 'audio/x-aiff'、
'aifc' => 'audio/x-aiff'、
'm3u' => 'audio/x-mpegurl'、
'ram' => 'audio/x-pn-realaudio'、
'rm' => 'audio/x-pn-realaudio'、
'rpm' => 'audio/x-pn-realaudio-plugin'、
'ra' => 'オーディオ/x-realaudio'、
'wav' => 'audio/x-wav'、
'pdb' => 'chemical/x-pdb'、
'xyz' => '化学物質/x-xyz'、
'bmp' => '画像/bmp'、
'gif' => '画像/gif'、
'ief' => '画像/ief'、
'jpeg' => '画像/jpeg'、
'jpg' => 'image/jpeg'、
'jpe' => 'image/jpeg'、
'png' => 'image/png'、
'tiff' => 'image/tiff'、
'tif' => 'image/tiff'、
'djvu' => 'image/vnd.djvu'、
'djv' => 'image/vnd.djvu'、
'wbmp' => 'image/vnd.wap.wbmp'、
'ras' => 'image/x-cmu-raster'、
'pnm' => 'image/x-portable-anymap',
'pbm' => 'image/x-portable-bitmap',
'pgm' => 'image/x-portable-graymap',
'ppm' => 'image/x-portable-pixmap'、
'rgb' => 'image/x-rgb'、
'xbm' => 'image/x-xbitmap',
'xpm' => 'image/x-xpixmap',
'xwd' => 'image/x-xwindowdump'、
'igs' => 'モデル/iges'、
'iges' => 'モデル/iges'、
'msh' => 'モデル/メッシュ',
'メッシュ' => 'モデル/メッシュ'、
'サイロ' => 'モデル/メッシュ'、
'wrl' => 'モデル/vrml',
'vrml' => 'モデル/vrml',
'css' => 'テキスト/css'、
'html' => 'text/html'、
'htm' => 'text/html',
'asc' => 'text/plain'、
'txt' => 'テキスト/プレーン'、
'rtx' => 'テキスト/リッチテキスト',
'rtf' => 'テキスト/rtf'、
'sgml' => 'text/sgml'、
'sgm' => 'text/sgml'、
'tsv' => 'テキスト/タブ区切り値',
'wml' => 'text/vnd.wap.wml',
'wmls' => 'text/vnd.wap.wmlscript',
'etx' => 'text/x-setext'、
'xsl' => 'text/xml'、
'xml' => 'text/xml'、
'mpeg' => 'ビデオ/mpeg'、
'mpg' => 'ビデオ/mpeg'、
'mpe' => 'ビデオ/mpeg'、
'qt' => 'ビデオ/クイックタイム'、
'mov' => 'ビデオ/クイックタイム'、
'mxu' => 'video/vnd.mpegurl'、
'avi' => 'video/x-msvideo'、
'ムービー' => 'ビデオ/x-sgi-ムービー'、
'ice' => 'x-conference/x-cooltalk'、

<<:  ReactとReduxの関係を詳しく説明

>>:  IE8対応のボーダー半径処理方法

推薦する

JavaScript はクリックして画像の形状を変更する (変換アプリケーション) を実装します。

JavaScriptをクリックすると画像の形状が変わります(変形の応用)。参考までに具体的な内容は...

crontab 実行時間とシステム時間の不一致の解決方法

序文LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | gre...

Linux(中心OS7)は、Java Webプロジェクトの実行環境を構築するためにJDK、Tomcat、MySQLをインストールします。

1. JDKをインストールする1. 古いバージョンまたはシステム独自のJDKをアンインストールする...

innodb_autoinc_lock_mode の表現と値の選択方法についての簡単な説明

前提条件: Percona 5.6 バージョン、トランザクション分離レベルは RR mysql>...

Windows 上で Zookeeper サーバーを構築するチュートリアル

インストールと設定Apacheの公式ウェブサイトには多くのミラーダウンロードアドレスが用意されており...

MySQL データ圧縮パフォーマンス比較の詳細

目次1. テスト環境1.1 ハードウェアとソフトウェア1.2 テーブル構造2. テストの目的2.1 ...

Vue は URL に基づいて非同一オリジンのファイルをどのようにダウンロードするのか

一般的に、URL に基づいてファイルをダウンロードする場合、次の 2 つの解決策があります。 1. ...

mysql8.0.11クライアントがログインできない問題の解決方法

この記事では、mysql8.0.11クライアントがログインできない問題の解決策を紹介します。参考まで...

JS の配列トラバーサルについて、一般的なループをいくつ知っていますか?

序文基本的なデータ構造として、配列とオブジェクトはさまざまなプログラミング言語で重要な役割を果たしま...

React Router で履歴リダイレクトを使用する方法

react-routerでは、コンポーネント内のジャンプは<Link>で使用できます。し...

Linux で unzip コマンドを使用して複数のファイルを解凍する方法

Linuxにunzipコマンドがない問題の解決策unzipコマンドを使用して.zipファイルを解凍す...

フロントエンドの面接でよく聞かれる JavaScript の質問の完全なリスト

目次1. 手書きのインスタンス2.配列のマップメソッドを実装する3. Reduceは配列のmapメソ...

Nginx 構成 クロスドメイン リクエスト Access-Control-Allow-Origin * 詳細な説明

序文403 クロスオリジン エラーが発生しNo 'Access-Control-Allow-...

ウェブページ上の小さなスペースに大きな画像を配置する方法

出典: www.bamagazine.comウェブページのバナー、ニュースの見出しの周りのスペース、...

Linux での Docker と portainer の設定方法

1.Docer CEをインストールして使用するこの記事では、CentOS 7 を例に Docker ...