Chrome 71 откажется выполнять скрипт, потому что его MIME-тип ('text / x-js') не является исполняемым - PullRequest
0 голосов
/ 20 декабря 2018

У меня проблема с Chrome 71 : в FireFox он работает нормально, также на Chrome было объявлено , что нам следует ожидать двух небольших изменений в нашем способе работы с работниками сферы обслуживания и кэш-хранилищем 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 или какой-либо другойimportcripts, это все.Надеюсь, теперь стало понятнее.

1 Ответ

0 голосов
/ 24 декабря 2018

Для тех, кто сталкивается с проблемой, это хорошо известная проблема: " строгая проверка типов MIME ".Chrome позволяет проверять тип MIME.По этому поводу в стеке куча вопросов.Но бывает, что все еще можно было избежать " строгой проверки типов MIME " через рабочий API с помощью importScripts.

Для тех, кто по-прежнему использует Chrome 70.0.3538.110, как я, нет проверки типа mime strick через importScripts на рабочем API.Новая версия Chrome исправляет это.Но это все еще возможно в Firefox.Я сообщил об этом поведении в mozilla на случай, если оно не ожидалось

Мне было не ясно, но на нашей рабочей машине наш сервер apache имеет следующий тип mime: "text /x-js js ".Я просто заменяю его на "application / javascript" js или "text / javascript js" , который, кстати, устарел.

...