由于错误的MIME类型,Chrome拒绝执行AJAX脚本

我试图通过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);
    }
});

有没有人有这方面的解决方法?


通过添加一个回调参数,您告诉jQuery您希望使用脚本元素为JSONP发出请求,而不是使用XMLHttpRequest请求JSON。

JSONP不是JSON。 这是一个JavaScript程序。

更改您的服务器,以便为application/javascript输出JSONP的正确MIME类型。

(当你这样做时,不要告诉jQuery你期待JSON,因为这是矛盾的: dataType: 'jsonp' )。


如果您的代理服务器或容器在提供.js文件时添加了以下头文件,它将强制一些浏览器(如Chrome)严格检查MIME类型:

X-Content-Type-Options: nosniff

移除此标头可防止Chrome执行MIME检查。


仅供参考,我从Chrome控制台得到同样的错误。 我认为我的AJAX函数导致它,但我取消了将我的缩小脚本从/javascripts/ajax-vanilla.min.js注释到/javascripts/ajax-vanilla.js 。 但实际上,源文件位于/javascripts/src/ajax-vanilla.js 。 所以在Chrome中,即使找不到文件,您也会收到错误的MIME类型错误。 在这种情况下,错误消息被描述为text/plain错误的MIME类型。

链接地址: http://www.djcxy.com/p/47599.html

上一篇: Chrome refuses to execute an AJAX script due to wrong MIME type

下一篇: Creating web service with GAS using JSONP