拒绝从 'url' 执行脚本,因为它的 MIME 类型('application/json')不可执行

Posted

技术标签:

【中文标题】拒绝从 \'url\' 执行脚本,因为它的 MIME 类型(\'application/json\')不可执行【英文标题】:Refused to execute script from 'url' because its MIME type ('application/json') is not executable拒绝从 'url' 执行脚本,因为它的 MIME 类型('application/json')不可执行 【发布时间】:2015-06-28 14:39:43 【问题描述】:

我们正在尝试在我们的 jquery 代码中使用 Yammer 休息服务的“current.json”

$.ajax(
    url: "https://www.yammer.com/api/v1/networks/current.json",
    jsonp: "callback",
    type: "GET",
    dataType: "jsonp",
    data: "javascript",
    contentType: 'application/json; charset=utf-8',
    success: function (response) 
        alert(1);
        myObj = response;
        readJson(response); // server response
    ,
    error: function (xhr, errorText, status) 
        alert(-1);
    

每次它进入错误函数,但是当我们看到状态码时它显示 200。 我们还可以在浏览器控制台中看到响应(JSON 格式)。

我们面临的确切错误是:

拒绝执行脚本 'https://www.yammer.com/api/v1/networks/current.json?callback=jQuery110203706010680180043_1429617947980&_=1429617947981' 因为它的 MIME 类型('application/json')是不可执行的,并且 已启用严格的 MIME 类型检查。

有没有人可以解决这个问题?

谢谢。

【问题讨论】:

当您执行简单的$.getJSON 时,您是否收到了 CORS 错误?和 fyi - JSONP != 休息。 问题是因为您将dataType 设置为 JSONP,但响应以标准 JSON 格式返回。 【参考方案1】:

问题是因为您将 dataType 设置为 JSONP,但响应以标准 JSON 格式返回。

Yammer API 似乎不支持 CORS 或 JSONP。您需要使用他们提供的 JS SDK 通过 JavaScript 而不是 jQuery 向它发出请求。

【讨论】:

以上是关于拒绝从 'url' 执行脚本,因为它的 MIME 类型('application/json')不可执行的主要内容,如果未能解决你的问题,请参考以下文章

拒绝从 URL 执行脚本,因为它的 MIME 类型 ('application/json') 不可执行,并且启用了严格的 MIME 类型检查

拒绝从“*”执行脚本,因为它的 MIME 类型('text/HTML')不可执行

拒绝从 '*' 执行脚本,因为它的 MIME 类型 ('application/json') 不可执行,并且启用了严格的 MIME 类型检查

拒绝从 'file_name.php' 执行脚本,因为它的 MIME 类型 ('text/html') 不可执行,并且启用了严格的 MIME 类型检查

拒绝执行脚本,因为它的 MIME 类型 ('text/html') 不可执行,并且启用了严格的 MIME 类型检查

拒绝执行脚本,因为它的 MIME 类型 ('text/html') 不可执行并且启用了严格的 MIME 类型检查