【问题标题】:Refused to execute script because its MIME type ('image/gif') is not executable拒绝执行脚本,因为它的 MIME 类型 ('image/gif') 不可执行
【发布时间】:2021-09-29 18:16:27
【问题描述】:

我已将此代码添加到我的网站(在结束正文之前):

<script type="text/javascript">
    var vglnk = {key: '123456789'};
    (function(d, t) {
        var s = d.createElement(t);
            s.type = 'text/javascript';
            s.async = true;
            s.src = '//cdn.viglink.com/api/vglnk.js';
        var r = d.getElementsByTagName(t)[0];
            r.parentNode.insertBefore(s, r);
    }(document, 'script'));
</script>

(上面的密钥只是一个虚拟密钥。在我的生产环境中,我使用了正确的密钥。)

但是,在 Chrome 的开发者控制台中,我收到以下错误:

www.mywebsite.com/:1 Refused to execute script from 'https://api.viglink.com/api/sync.js?key=123456789' because its MIME type ('image/gif') is not executable.

为什么会这样?我做错了什么?

【问题讨论】:

  • 我猜cdn.viglink.com/api/vglnk.js 的 MIME 类型不正确,但不幸的是,您发布的客户端代码无法帮助我们找出发生这种情况的原因。
  • 是的,刚刚进行了快速的 HTTP 标头检查,文件 mime 类型设置为“gif”。你最终无能为力。您必须通知所有者他们的服务器配置错误
  • 非常感谢!这令人印象深刻 - 这肯定会影响 Viglink.com 的所有新 Chrome 版本的业务。
  • 我没有看到你在哪里发送请求中的 vglnk 密钥。

标签: javascript


【解决方案1】:

您确定您的密钥正确吗?

gif 响应可能是 viglink 处理无效请求的方式 - 如果密钥无效,则返回 gif。在浏览器中直接访问https://api.viglink.com/api/sync.js?key=123,它会返回GIF。

但是,我使用有效的密钥对其进行了测试:

https://api.viglink.com/api/sync.js?key=&lt;valid-key&gt;

它返回了 sync.js javascript 文件

【讨论】:

    【解决方案2】:

    问题是您有一个 元素正在尝试加载一些外部 JavaScript。

    您提供的 URL - 它可能指向 GIF 文件而不是 JavaScript 程序。

    服务器正确报告它是 GIF,因此浏览器正在中止该错误消息,而不是尝试将 JSON 作为 JavaScript 执行(这会引发错误)。

    试试这个

      <script type="image/gif"> 
    

    现在浏览器知道它不是在尝试加载 JavaScript,所以它完全忽略了脚本元素

    【讨论】:

      【解决方案3】:

      根据这个answer,似乎一旦你在 URL 中输入正确的键,你就会得到一个有效的 Javascript 文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        • 2015-06-28
        • 2018-10-12
        • 2018-01-02
        • 1970-01-01
        • 1970-01-01
        • 2019-05-21
        相关资源
        最近更新 更多