Chrome 71将拒绝执行脚本,因为其MIME类型('text / x-js')无法执行

时间:2018-12-20 17:49:05

标签: javascript google-chrome mime-types web-worker

我在 Chrome 71 上遇到问题: 在FireFox中,它也可以在Chrome announcement at Google上,我们在与服务工作者缓存存储api 的工作方式上应该期待两个小的变化。 但是新版本破坏了我的importScripts,我还不知道如何解决它。

我得到了一个名为pdfmake-worker-blob.js的文件,其内容为:

importScripts('./pdfmake.min.js');
importScripts('./vfs_fonts.js');

onmessage = function(req) {

  pdfMake.fonts = {
      Courier: { normal: 'cour.ttf',bold: 'cour-bold.ttf' },
      Arial: { normal: 'arial.ttf',bold: 'arial-bold.ttf' }
  };

  try {
    var pdf = pdfMake.createPdf(req.data);
    pdf.getBlob(function(output) {
        postMessage(output);
    });
  } catch(err) {
    throw err;
  }
}

然后我们在使用它之前在另一个服务中创建工作程序:

 var pdfmakeWorkerBlob = new Worker('scripts/pdfmake-worker-blob.js');

您可以在chrome调试器模式下看到此信息(我想再次提醒您,代码在 firefox chrome 70 及以下版本上可以正常工作): enter image description here

控制台中出现以下信息,我的工作人员不再做他的工作:

  

pdfmake-worker-blob.js:1已弃用:将来的版本将拒绝   从执行脚本   'http://myserver_name.company.com/application_name/scripts/pdfmake.min.js'   因为其MIME类型('text / x-js')无法执行。

我没有设置这种Mime类型,或者我只是做了一个importscripts而已。我希望现在更加清楚。

1 个答案:

答案 0 :(得分:0)

对于那些面临问题的人来说,这是一个众所周知的问题:“ 严格的MIME类型检查”。 Chrome启用了严格的mime类型检查。关于它的堆栈上有大量问题。 但是碰巧,仍然可以通过具有importScripts的工作程序api避免“ 严格的MIME类型检查”。

对于像我这样仍在使用chrome 70.0.3538.110的用户,没有通过worker api上的 importScripts 进行严格的mime类型检查。 chrome的新版本已修复。但是在Firefox中仍然有可能。我向Mozilla报告了this behaviour,以防万一。

我不清楚,但是在我们的生产机器中,我们的apache服务器设置了以下这种mime类型:“ text / x-js js” 。我只是用应用程序“ application / javascript” js或“ text / javascript js” 替换掉了。