我正在尝试通过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);
}
});
有谁有解决这个问题的办法吗?
发布于 2014-07-02 18:17:49
通过添加回调参数,您告诉jQuery您希望使用脚本元素请求JSONP,而不是使用XMLHttpRequest请求JSON。
JSONP不是JSON。这是一个JavaScript程序。
更改您的服务器,使其为JSONP输出正确的MIME类型,即application/javascript
。
(当你这样做的时候,停止告诉jQuery你期待的是JSON,因为这是矛盾的:dataType: 'jsonp'
)。
发布于 2014-12-03 17:19:15
如果您的代理服务器或容器在提供.js文件时添加了以下标头,则会强制某些浏览器对MIME类型执行严格检查:
X-Content-Type-Options: nosniff
删除此头以阻止Chrome执行MIME检查。
发布于 2016-05-20 17:47:23
仅供参考,我在Chrome控制台上也遇到了同样的错误。我认为是我的AJAX函数引起的,但我取消了从/javascripts/ajax-vanilla.min.js
到/javascripts/ajax-vanilla.js
的精简脚本的注释。但实际上,源文件位于/javascripts/src/ajax-vanilla.js
。所以在Chrome中,即使找不到文件,你也会得到糟糕的MIME类型错误。在这种情况下,错误消息被描述为text/plain
bad MIME类型。
https://stackoverflow.com/questions/24528211
复制相似问题