web-dev-qa-db-ja.com

http応答ヘッダーでcontent-typeを指定する必要がありますか?

Htmlドキュメントを除き、現在、Webサーバーから提供されるすべてのファイル(css、javascript、および画像)は、http応答ヘッダーでcontent-typeを指定していません。 typeタグとscriptタグの両方でlink属性を削除するつもりであるのに気づきましたが、 this answer に遭遇しました。 :

MIMEタイプもHTTP Content-Typeヘッダーを介して送信されるため、type = "text/css"を使用しても余分なバイトしかありません。

8

はい。 HTTPプロトコルでは、 clause 7.2.1

「エンティティ本体を含むHTTP/1.1メッセージには、その本体のメディアタイプを定義するContent-Typeヘッダーフィールドを含める必要があります。メディアタイプがContent-Typeフィールドで指定されていない場合にのみ、受信者はそのコンテンツおよび/またはリソースの識別に使用されるURIの名前拡張子の検査によりメディアタイプを推測しようとする場合があります。

そのため、応答ヘッダーには、応答データのContent-Typeヘッダーを含める必要があります(プロトコルでは「エンティティ本体」と呼ばれ、多くの場合、共通言語では「ファイル」)。省略した場合、ブラウザは取得したデータの種類について独自の推測を行うことができます。多くの状況で、間違った推測のリスクは無視できますが、これはプロトコルに違反するための良い言い訳ではありません。

type=text/csstype=text/javascriptのような属性は、いくつかの正式な仕様による場合を除いて、または有用でさえありません。サーバーが誤って送信した場合でもContent-TypeなしのCSSデータ。ブラウザは、<link rel=stylesheet ...>がリクエストの原因となった要素である場合、データをCSSとして扱います。その場合に重要なのはrel属性です。

7