Отказался от выполнения скрипта, потому что его тип MIME ('application / gzip') не является исполняемым, и включена строгая проверка типов MIME - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь настроить безопасность шлема на своем рабочем сервере приложений. Но всякий раз, когда я пытаюсь нажать на URL. Я получаю сообщение об ошибке: Refused to execute script from 'http://localhost:3000/static/js/app.378bd8b8eee930fb268c.js' because its MIME type ('application/gzip') is not executable, and strict MIME type checking is enabled.

enter image description here

Для сборки сжатия я использую compression-webpack-plugin.

Сборка сжатия работает прекрасно, когда я удаляю helmet. Настройка плагина шлема:

{"xssFilter": {"setOnOldIE": true}}

1 Ответ

1 голос
/ 19 марта 2020

tl; dr: /static/js/app.378bd8b8eee930fb268c.js отправляется с Content-Type из application/gzip, но должно быть application/javascript.


Автор шлема здесь. Это происходит из-за заголовка X-Content-Type-Options, который Helmet автоматически устанавливает на nosniff. Это говорит браузерам не определять тип файла и доверять Content-Type, который устанавливает сервер.

Как вы можете видеть на скриншоте, /static/js/app.378bd8b8eee930fb268c.js имеет Content-Type из application/gzip , Браузер отказывается интерпретировать его как JavaScript, потому что его Content-Type не application/javascript - это заголовок X-Content-Type-Options в действии.

Вы можете решить эту проблему, исправив это - получите JavaScript файлы Content-Type должны быть application/javascript, а не application/gzip.

...