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


8

HTMLドキュメントを除いて、現在、私のWebサーバーから提供されるすべてのファイル(css、javascript、および画像)content-typeは、http応答ヘッダーでを指定していません。タグとタグのtype両方で属性を削除するつもりでたまたまこれに気づきましたが、次のような答えを見つけました。scriptlink

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


2
IEでスクリプトを実行するには、Content-Typeを指定する必要があると思います。これは、悪意のあるユーザーが画像共有Webサイトにスクリプトをアップロードするのを防ぐためです。
ブレンドン

@Brendon、セキュリティへの影響を指摘してくれてありがとう。ユーザーがコンテンツをアップロードしていないと想定して、セキュリティ面で注目すべき他の側面はありますか?
質問のオーバーフロー

1
サーバーContent-Typeこれらのファイルのヘッダーを送信していないことを確認しますか?ブラウザのキャッシュから提供されたファイルからの応答を表示している場合、Content-Typeヘッダーはおそらく表示されません。
MrWhite

ほとんどのサーバーはデフォルトで正しいMIMEタイプを送信するため、サーバーが明示的に送信しないように設定しない限り、ファイル正しいMIMEタイプで送信されているに違いありません。
DisgruntledGoat

1
@ w3d、コメントありがとうございます。再確認したところ、実際に読み取っているのは304 not modifiedファイルの要求ヘッダーからのものであることがわかりました。正確にはキャッシュではありませんが、コンテンツタイプはヘッダーから削除されます。キャッシュを無効にすると、すべてが再び正常に表示されます。
質問のオーバーフロー

回答:


7

はい。HTTPプロトコルによる7.2.1節

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

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

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

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