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


119

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

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

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

回答:


155

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

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

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

  • application/x-www-form-urlencoded (デフォルト、古い、シンプル、少量のシンプルなASCIIテキストのオーバーヘッドがわずかに少ない、ファイルアップロードサポートなし)
  • multipart/form-data (新しい、ファイルのアップロードのサポートを追加し、大量のバイナリデータまたは非ASCIIテキストにより効率的)

22
  • Accept:たとえば、誰かが理解できるすべての言語をブラウザが消化できるものです。
  • Content-Type:実際のデータの形式、たとえば誰かが話している言語。コンピューターは、「ああ、彼はドイツ人だ!」または「彼女は中国語を話している!」

1
必ずしもブラウザではなく、任意のhttpクライアント。
ジム・アホ

20

受け入れるのは

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

コンテンツタイプは

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


私はここに遅れていることは知っていますが、私は好奇心が強いです、応答形式がサーバーによって「受け入れられた」形式で送信されない場合はどうなりますか?
悲鳴を上げる

1
@shriekを決定するのはクライアント次第です。ほとんどのhttpクライアント(またはブラウザー)は、「インテリジェントに」実際のデータを見て、それが本当に何であるかを確認すると思います。1つのクライアントは、JSONであるはずの応答を無視することもできますが、他のように見えるため、解析は失敗します。
ジム・アホ

5

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

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

間違っています。Acceptはリクエストヘッダーです。受け入れられた答えを参照してください。
ダロン

2
@darronいいえ、この答えは正しいです。彼はそれがリクエストヘッダーではないと言っているのではなく、その目的はサーバーにどのような応答を返すことを期待しているのかを伝えることだと言っています。他の答えと重複するようなものですが、最も簡潔だと思います。+1。
トッドメニエ

0

受け入れる

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

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