1. ホーム
  2. javascript

[解決済み] MIME タイプが正しくないため、Chrome が AJAX スクリプトの実行を拒否する。

2022-05-12 10:36:51

質問

AJAXでJSONとしてスクリプトにアクセスしようとしているのですが、Safariや他のブラウザでは正常に動作するのですが、残念ながらChromeでは実行されません。以下のようなエラーが発生します。

MIME タイプ ('application/json') が実行可能でないため、'*' からのスクリプトの実行を拒否され、厳格な MIME タイプ チェックが有効になっています。

以下はリクエストです。

$.ajax({
    url: "http://some_url/test.json?callback=?",
    type: "GET",
    dataType: 'json',
    cache: true,
    success: function (data, status, error) {
      console.log('success', data);
    },
    error: function (data, status, error) {
      console.log('error', data, status, error);
    }
});

どなたか回避策をご存じないでしょうか?

解決方法は?

callback引数を追加することで、XMLHttpRequestを使ったJSONのリクエストではなく、script要素を使ったJSONPのリクエストを行いたいことをjQueryに伝えています。

JSONPはJSONではありません。JavaScriptのプログラムです。

JSONP用の正しいMIMEタイプを出力するようにサーバーを変更します。 application/javascript .

(矛盾しているので、jQueryにJSONを期待していると伝えるのはやめましょう。 dataType: 'jsonp' ).