application / x-javascriptとtext / javascriptコンテンツタイプの違い


245

これらのヘッダーの違いは何ですか?

Content-Type: application/javascript
Content-Type: application/x-javascript
Content-Type: text/javascript

どちらがベストで、なぜですか?

それらが同一であると言わないでください-それらが同一である場合、それらの3つは存在しなかったでしょう。私は両方の仕事を知っていますが、違いを知りたいです。


1
この違いは、スクリプトが圧縮されない典型的な理由でもあります。提供する実際のタイプのエントリがhttpCompressionにあることを確認し、IIS Expressはデフォルトでapplication / x-javascriptおよびtext / *のみを圧縮することに注意してください。
rism 2015

注意:「JavaScript MIMEタイプ」の完全なリストは、html.spec.whatwg.org / multipage / …にあります。つまり、これは、ディレクティブが指定されたときにブラウザがscriptタグのtype属性に対して許可する必要がある値のリストですnosniffdeveloper.mozilla.org/en-US/docs/Web/HTTP/Headers/...
JohnLBevan

回答:


320

text/javascript廃止され、標準化されるまでの移行期間についてapplication/x-javascript実験的でした(したがって、x-プレフィックスです)application/javascript

使用する必要がありますapplication/javascriptこれはRFCに文書化されています

ブラウザに関する限り、違いはありません(少なくともHTTPヘッダーでは)。これは単なる変更であり、可能な場合はtext/*application/*MIMEタイプのグループに一貫した意味がありました。(text/*MIMEタイプは人間が読み取り可能なコンテンツを対象としています。JavaScriptは人間に直接意味を伝えるようには設計されていません)。

使用していることに注意してくださいapplication/javascripttypescript要素の属性は一部の古いブラウザでは(不明な言語であるものとして)スクリプトは無視されます。text/javascriptそこで引き続き使用するか、属性を完全に省略してください(HTML 5では許可されています)。

ブラウザは、(私が知っている限り)普遍的に、HTTPコンテンツタイプのスクリプトを完全に無視するか、またはを認識できるほど最新のものであるため、HTTPヘッダーの問題ではありませんapplication/javascript


詳細な回答に感謝します。もう1つの問題-完全に省略できる(HTML5のみ?)とのことですが、私の質問(後で誰かが編集したもの)は特にPHPのJSに関するものでした-すべてのサーバー/ブラウザでPHP / JSコンボとして機能しますか完全に省略した場合は??
Obmerk Kronen

8
あなたは、省略することができtype 、属性<script>要素を。Content-TypeHTTPヘッダーを省略することはできません…(PHPでHTTPヘッダーを指定しない場合、PHPはデフォルトtext/htmlで非常に間違っています)。
クエンティン

2
人間が読めるロジックに従って、CSSはテキストではなくアプリケーションにも分類されるべきではありませんか?
FABRICIOマット

2
@frnhrこの回答への編集により、意図された意味が変更されました(これtext/javascriptは時代遅れでapplication/x-javascript実験的なものであると述べたものです)。さらに悪いことに、回答の冒頭に一貫性text/javascriptがなく、明確な理由がないため、回答の上部に無関係にぶら下がっているというブロックがありました。
Mark Amery

1
SVNでは、必ずtext / javascriptを使用してください。SVNは、text /で始まらないものをバイナリとして扱います。SVN作業コピー全体を修正するには、以下を含むmime.cmdファイルを作成する必要があります。@echo off for /r . %%X in (*.js) do ( svn propset svn:mime-type text/javascript "%%X" ) 実行すると、リポジトリ内のすべてのJSファイルのMIMEタイプがtext / javascriptに変更されます。次に、JSファイルを新しいMIMEタイプでSVNにコミットする必要があります。
Mark Eldridge、

21

で始まるMIMEタイプx-は標準化されていません。JavaScriptの場合、それは一種の時代遅れです。追加の2番目のコードスニペット

<?Header('Content-Type: text/javascript');?>

short_open_tags有効にする必要があります。あなたはそれを避けるべきです。

<?php Header('Content-Type: text/javascript');?>

ただし、JavaScript の完全に正しいMIMEタイプは

application/javascript

http://www.iana.org/assignments/media-types/application/index.html


1
古い答えですが、それがベストプラクティスでなくなるまで、短いオープンタグから始めるのが良いかどうかはわかりません(実際にはPHP-SOTを無効にすることを強くお勧めします)
Ben Cassinat

8

RFC 4329によると、JavaScriptの正しいMIMEタイプはであるはずですapplication/javascript。ハワーバー、彼らが期待しているので、古いIEバージョンはこれで窒息しましたtext/javascript


7
私が知っている限り、IEはHTTPコンテンツタイプが言うことをサルに提供しません。HTML type属性の内容(およびHTML 5ドラフトでは、JavaScriptではその属性を省略できます)。
クエンティン

@クエンティンああ...それは私にトラブルを引き起こしていたものです。ありがとう!
火曜日

3

type = "application / javascript"を使用します

HTML5の場合、type属性は廃止されているため、削除できます。注:w3.orgによると、デフォルトでは「text / javascript」になっているため、「application / javascript」を削除するのではなく追加することをお勧めします。

http://www.w3.org/TR/html5/scripting-1.html#attr-script-type
type属性は、スクリプトの言語またはデータの形式を指定します。属性が存在する場合、その値は有効なMIMEタイプである必要があります。charsetパラメータを指定してはなりません。属性がない場合に使用されるデフォルトは「text / javascript」です。

「text / javascript」は廃止されているため、「application / javascript」を使用します。

RFC 4329:http ://www.rfc-editor.org/rfc/rfc4329.txt

  1. 展開されたスクリプトメディアの種類と互換性

    ECMAScriptとJavaScriptで記述されたプログラムにラベルを付けて交換するために、さまざまな未登録のメディアタイプがその場限りの方法で使用されています。これらには以下が含まれます:

    + ------------------------------------------------- ---- + | テキスト/ JavaScript | テキスト/ ecmascript | | text / javascript1.0 | text / javascript1.1 | | text / javascript1.2 | text / javascript1.3 | | text / javascript1.4 | text / javascript1.5 | | テキスト/ jscript | テキスト/ livescript | | テキスト/ x-javascript | text / x-ecmascript | | application / x-javascript | application / x-ecmascript | | アプリケーション/ JavaScript | アプリケーション/ ecmascript | + ------------------------------------------------- ---- +

この種のコンテンツに「テキスト」トップレベルタイプを使用すると、問題が発生することがわかっています。したがって、このドキュメントではtext / javascriptとtext /
ecmascript を定義していますが、「廃止」としてマークされています。
上記の一部に記載されている実験的および未登録のメディアタイプの使用はお勧めしません。
メディアタイプ、

  * application/javascript
  * application/ecmascript

これらもこのドキュメントで定義されており、一般的な使用を目的としており、代わりに使用する必要があります。

このドキュメントでは、
タイプtext / javascript、text / ecmascript、application / javascriptの同等の処理要件を定義しています。
メディアタイプのアプリケーション/ ecmascriptの使用とサポートは、 このドキュメントで
定義されている他のメディアタイプの場合よりもかなり普及していません
。その利点を生かして、このドキュメントでは、
より相互運用可能な
処理を促進するために、このタイプのより厳密な処理ルールを定義しています。

x-javascriptは実験的なものであり、使用しないでください。

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