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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (151)

我想通过AJAX作为JSON访问脚本,该脚本在Safari和其他浏览器上运行良好,但不幸的是不会在Chrome中执行。它出现以下错误:

Refused to execute script from '*' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.

这是请求:

$.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类型。

用户回答回答于

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

X-Content-Type-Options: nosniff

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

扫码关注云+社区