web-dev-qa-db-ja.com

AcceptとContent-Type HTTPヘッダーの違い

そのため、Acceptヘッダーは、ブラウザが探しているリソースのMIMEタイプをサーバーに伝えます。たとえば、サーバーはプレーンテキスト、HTML、JSONなどを送信できます。

OK、それは理にかなっていますが、Content-Typeヘッダーを見ると、同じことをしているようです。たとえば、テキストまたはJSONが必要であることをサーバーに伝えます。

では、AcceptContent-Type HTTPヘッダーの違いは何ですか?

118
JohnMerlino

ご指摘のとおり、HTTPクライアントは Accept header を使用して、受け入れるコンテンツタイプをサーバーに通知します。その後、サーバーは応答を送り返します。応答には、返されるコンテンツのコンテンツタイプが実際に何であるかをクライアントに伝える Content-Typeヘッダー が含まれます。

ただし、お気づきかもしれませんが、HTTPリクエスト 含むこともできます Content-Typeヘッダー。どうして?さて、 POST または PUT リクエストについて考えてください。これらの要求タイプでは、クライアントは要求の一部として実際に大量のデータをサーバーに送信し、Content-Typeヘッダーはサーバーにデータが実際に何であるかを伝えます(したがって、サーバーがどのように解析するかを決定します)。

特に、HTMLフォームの送信から生じるPOSTリクエストの場合、リクエストのContent-Typeは(通常)指定された標準の フォームコンテンツタイプ のいずれかです。 <form>タグのenctype属性によって:

  • application/x-www-form-urlencoded(デフォルト、古い、シンプル、少量のシンプルASCIIテキストのオーバーヘッドがわずかに少ない、ファイルアップロードサポートなし)
  • multipart/form-data(新しい、ファイルのアップロードのサポートを追加し、大量のバイナリデータまたは非ASCIIテキストにより効率的)
153
Ilmari Karonen
  • Accept:ブラウザがすべてをダイジェストできるもの誰かが理解できる言語
  • Content-Type:実際のデータがどのフォーマットにあるか、たとえば誰かが話している言語。コンピュータは(まあ、今では)人々が「ああ、彼はドイツ人だ!」または「彼女は中国語を話している!」
22
ionFish

受け入れるのは

ここに私のリクエストがあり、このレスポンス形式を(受け入れたい)

コンテンツタイプは

これが私の要求(または応答)であり、これ(Content-Type)は私の要求(または応答)で送信するコンテンツの形式です

19
JRomio

これは要求と応答の会話なので、クライアント

  • 「Content-Type」のリクエストを送信し、
  • 「Accept」メディアタイプの応答を受信する必要があります。
5
Waldemar

受け入れる

Accept request HTTPヘッダーは、MIMEタイプとして表現される、クライアントが理解できるコンテンツタイプをアドバタイズします。サーバーは、コンテンツネゴシエーションを使用して、提案の1つを選択し、それを使用して、Content-Type応答ヘッダーでその選択をクライアントに通知します。ブラウザーは、要求が行われるコンテキストに応じてこのヘッダーに適切な値を設定します。CSSスタイルシートを取得する場合、画像、ビデオ、またはスクリプトを取得する場合とは異なる値が要求に設定されます。

ソース:developer.mozilla.org

コンテンツタイプ

Content-Typeエンティティヘッダーは、リソースのメディアタイプを示すために使用されます。

応答では、Content-Typeヘッダーは、返されたコンテンツのコンテンツタイプが実際に何であるかをクライアントに伝えます。ブラウザーは、場合によってはMIMEスニッフィングを行い、必ずしもこのヘッダーの値に従うとは限りません。この動作を防ぐために、ヘッダーX-Content-Type-Optionsをnosniffに設定できます。

リクエストでは(POSTやPUTなど)、クライアントは実際に送信されるデータのタイプをサーバーに伝えます。

ソース:developer.mozilla.org

0
Wlad