JavaScriptファイルを提供する場合、application / javascriptまたはapplication / x-javascriptを使用する方が良いでしょう。


95

質問全体がタイトルに収まります。そして、いくつかのコンテキストを追加します。私は、仕様が言っていることに応じて何が最良であるかを尋ねているのではなく、最近展開されているブラウザーの組み合わせを考えると、何が最良に機能するかを尋ねています。

いくつかのデータポイント:

  • Googleはtext/javascript、ホームページで使用されているJSを使用しています。
  • Googleはtext/javascriptGoogleドキュメントで使用します。
  • Googleはapplication/x-javascriptAjaxライブラリサービスで JavaScriptファイルを提供するために使用します。
  • Yahooはapplication/x-javascriptJSを提供するために使用しています。
  • Yahooはapplication/x-javascript、ホームページで提供されるJavaScriptを使用しています。

4
おかしい。あなたの例では3番目の選択肢を示しています...そしてTimによると、両方の大きなプレーヤーは(標準に関して)間違っています。これはおそらくブラウザーが許容できる(ここでは大きなニュースはない)ことを意味し、問題ではないかもしれません。
PhiLho 2009年

1
考えられるだまし:Javascript MIMEタイプ
Bergi 2013

回答:


115
  • text/javascript 時代遅れです
  • application/x-javascript に移動することを決定しながら実験的だった…
  • application/javascript JSの現在の公式MIMEタイプです。

とはいえ、ブラウザcontent-typeはサーバーから送信されたメッセージを無視し、type属性に多くの注意を払うことがよくあります(まだ認識していないものもあります)application/javascript)。

私の推薦:

  • サーバーでapplication / javascriptを使用する
  • HTML 5を使用しtype、スクリプト要素から属性を省略します

注意:HTML仕様はMIME標準に矛盾しており、将来的には変更される可能性があるため、HTML仕様戻す努力がなさtext/javascriptれています。


3
数か月前のこの質問は正反対のことを言っています。誰かが間違っている:)「ケリーの権利、ブラウザがスクリプトタグのtype属性の上にレスポンスヘッダで送信されたMIMEタイプを信頼する傾向がある」 stackoverflow.com/questions/189850/...
マルコ

6
大野!大規模でモノリシックで遅い組織は正しいはずです。スペックが間違っているに違いありません!すごい。大企業(遅い)の1人が以前私を雇っていたとしても、仕様と私自身の大企業(遅い)での経験を信頼し続けます。
Quentin

1
うーん、誰かがW3Cにtext / javascriptが廃止されていることを伝えるのを忘れていました。あるように思わデフォルトHTML 5。:: scratches head ::(このセクションのざっくりとした読み方が正しい場合)ユーザーエージェントは属性のみに移動することになっているためtype、無視してContent-typeも正しい動作であるようです。
big_m

1
@big_m —多くのブラウザーが認識しないapplication/javascriptため、指定するとスクリプトが無視されます。ユーザーエージェントはContent-Typeを無視することになっています。type属性は、何を期待するかを伝えます。彼らがそれをサポートしないなら、彼らはそれを要求することに迷惑をかけてはいけません。サーバーがそれが何か違うと言った場合、HTMLが言っているのではなく、それを続行する必要があります(少なくともHTTPによれば、異なる仕様を調べている可能性があり、リンクを提供していません)。
クエンティン

1
@クエンティン、私はscriptリンクした要素のHTML 5セクションを参照していました。そのセクションの私の読みは、あなたの説明とは異なります。type属性を非常に重要視しているようでContent-Type、文字エンコーディングの決定を除いて、のチェックについては触れていません。ユーザーエージェントがContent-Typeが予期されたものと一致することを確認するのが賢明であるように思われることに同意しますが、HTML仕様でそれを必要とする、または推奨するものすら見つけていません。
big_m


7

ページでjsにapplication / javascriptを使用することを選択した場合、IE7およびIE8はスクリプトを実行しません。Microsoftをすべて非難しますが、ほとんどの人にページを実行させたい場合は、text / javascriptを使用します。


3
「application / javascript」が機能しないと言うとき、それがHTTP応答のコンテンツタイプとして設定されているのか、それともスクリプトタグの「type」属性として設定されているのですか?元の質問は、HTTP応答のコンテンツタイプに関するものでした。他の回答に基づくと、スクリプトタグの "type"属性の値のみがIEでどちらの方法でも違いをもたらすように見えます。
ジェシーハレット2011年

7

昔だったlanguage="javacript"。その後、に変わりましたtype="text/javascript"。今ですtype="application/javacript"。わかりました、これはばかげています。古いブラウザの一部は新しいを認識しませんapplication/javascriptが、古いを認識しtext/javascriptます。私はこれを使い続けるつもりです。そうしないと、のすべてのインスタンスをtext/javascriptに変更しようとして何時間も費やしてしまいapplication/javascriptます。
いつの日かその逆が真実かもしれません。いつの日か最新のブラウザは、厳密に標準に準拠するために、古い手法を拒否する可能性があります。
しかし、私のウェブサイトを閲覧している人が「ブラウザをアップグレードしてから、あなたのウェブサイトの約50%が消えた」と不平を言うまでは、私のウェブサイトのコードを変更する動機はありません。


7

これがこの質問に対する2020の回答です。

text/javascriptHTML Standardごとの正しいJavaScript MIMEタイプです。

サーバーはtext/javascriptJavaScriptリソースに使用する必要があります。サーバーは、JavaScriptリソースに他のJavaScript MIMEタイプを使用してはならず、非JavaScript MIMEタイプを使用してはなりません。

そしてまた

[…]この仕様でJavaScriptを参照するために使用されるMIMEタイプはですtext/javascript。これは、RFC 4329に従って公式に廃止されたタイプであるにもかかわらず、最も一般的に使用されるタイプであるためです。

この現実をIETFレベルのRFCに反映する作業が進行中です:https : //datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/

text/javascript廃止されたものである」という主張は、RFC 4329に基づいてそのように述べています。HTML標準と上記のIETFドラフト(つまり、今後のRFC)の両方が明示的に修正されています。


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