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);
}
});
これに対する回避策を持っている人はいますか?
ベストアンサー1
コールバック引数を追加することで、XMLHttpRequest を使用して JSON を要求する代わりに、スクリプト要素を使用して JSONP を要求することを jQuery に伝えます。
JSONP は JSON ではありません。JavaScript プログラムです。
サーバーを変更して、JSONP の正しい MIME タイプ ( ) を出力するようにしますapplication/javascript
。
(ついでに言えば、jQuery に JSON を期待していると伝えるのはやめてください。矛盾しています: dataType: 'jsonp'
)。