解决 Refused to execute script from ** is not executable, and strict MIME type checking is enabled.

引言

在前端项目部署到生产环境后,我们可能会遇到页面空白的问题,而浏览器控制台中出现的错误提示往往是关键线索。本文将详细解析一个常见的错误提示:Refused to execute script from "**" is not executable, and strict MIME type checking is enabled.,并提供解决方案。

错误解析

这个错误通常发生在浏览器尝试执行一个脚本,但服务器返回的 MIME 类型不符合预期时。在严格 MIME 类型检查启用的情况下,如果返回的 MIME 类型不是可执行的,浏览器将拒绝执行该脚本。

常见原因

  1. 服务器配置错误:服务器没有正确设置静态文件的 MIME 类型,导致返回了错误的类型,如将 .js 文件错误地识别为 text/html
  2. X-Content-Type-Options: nosniff:这是一个安全特性,用于防止 MIME 类型混淆攻击。当这个头部被设置时,浏览器会强制检查资源的 MIME 类型,如果不符合预期,就会阻止资源的加载。

解决方案

检查服务器配置

首先,检查你的服务器配置,确保正确设置了 MIME 类型。如果你使用的是 Express,可以通过以下方式设置静态文件服务,并确保正确的 MIME 类型被返回:

const express = require('express');
const app = express();// 设置静态文件目录
app.use(express.static('public'));// 确保第三方模块 mime 类型正确识别
const mime = require('mime-types');
app.use((req, res, next) => {if (req.path.endsWith('.js')) {res.setHeader('Content-Type', 'application/javascript');} else if (req.path.endsWith('.css')) {res.setHeader('Content-Type', 'text/css');}next();
});app.listen(3000, () => {console.log('Server is running on port 3000');
});

取消 X-Content-Type-Options: nosniff 配置

如果你的服务器设置了 X-Content-Type-Options: nosniff,你可以考虑取消这个配置,或者改为更宽松的设置。这可以通过修改服务器配置来实现,例如在 Nginx 中:

http {...add_header X-Content-Type-Options "nosniff" always;...
}

通过 HTTP 响应头设置 MIME 类型

另一种方法是在服务器端设置 HTTP 响应头,以确保正确的 MIME 类型被返回:

// 在服务器端设置响应头
response.setHeader('Content-Type', 'application/javascript');

总结

页面空白问题可能由多种原因引起,其中之一就是 MIME 类型错误。通过检查和调整服务器配置,确保正确的 MIME 类型被返回,可以解决这个问题。同时,理解 X-Content-Type-Options: nosniff 的影响,并适当调整,也是保障前端项目顺利部署的关键。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/862253.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lvs+dr+httpd+keepalived高可用部署

lvs+dr+httpd+keepalived高可用部署参考文档:http://blog.csdn.net/m582445672/article/details/7670015 a、 keepalived 是lvs 的扩展项目,因此它们之间具备良好的兼容性。这点应该是keepalived 部署比其他类似工具能更简洁的原因吧! b、 通过对服务器池对象的健康检查,实…

《数字经济:行业产业链》全景梳理及区域热力图

行业主要上市公司:中兴通讯(000063)、大华股份(002236)、中科创达(300496)、软通动力(301236)、奇安信(688561)、同方股份(600100)、……等 本文核心数据:《数字经济:产业链 》、《数字经济:产业链 - 生态图谱》、《“产业数字化” 和 “数字产业化” 上市公司…

《数字经济行业产业链》全景梳理及区域热力图

行业主要上市公司:中兴通讯(000063)、大华股份(002236)、中科创达(300496)、软通动力(301236)、奇安信(688561)、同方股份(600100)、……等 本文核心数据:《数字经济产业链 》、《数字经济产业链生态图谱》、《产业数字化 和 数字产业化上市公司区域分布 TOP5》、…

【长路经】C#读取文件抛出FileNotFoundException异常

前言 在winform中读取文件信息时,突然抛出了FileNotFoundException的异常,但是本地是有这个文件的。 随后找到了这个文件,查看属性,[位置]属性,多了"\\?\"的前缀,百度得知这是windows对长路经的处理。需要注意: 目前在NetFx框架下,才有这个问题。 在NetCore…

【unity】学习制作类银河恶魔城游戏-5-

在-1---4-中,了解了unity的基础操作,从创建一个人物开始,通过状态机和代码完善人物的各种功能达到预期效果,随着功能的越来越多,状态机的处理也就越发麻烦,因此,从零开始设计一个合理的状态机很有必要 梦开始的地方 创建一个新的项目修改舒服的布局创建状态机,通过脚本…

CH340C 请求 USB 设备描述符失败

简短不看版如果出现上述状况,说明线有问题:线的确是数据线(不是电源线),但是不是能与CH340正常通讯的数据线(数据线的数据传输功能有问题。 需要更换其它数据线.前文该文分享CH340驱动使用过程可能出现的问题,以下出现的问题解决方案都建立在CH340硬件正常的情况下。CH3…

CH32V203F6P6-TSSOP20测试之02

一、问题思考 直接用官方提供的例程,为何下载程序后没有什么响应,难道自己设计的电路有什么不妥? 于是,对于电路进行具体分析,结果发现: 第一、官方的BOOT0采用杜邦线连接,在芯片手册好像找不到关于BOOT0的叙述,仅仅在《CH32V20x评估板说明书》中看到:也就是说,这芯片…

PVC

短线反弹

大语言模型提示技巧(一)-指令要清晰、具体

在与大语言模型对话时,应该提供尽可能清晰和具体的指令来表达希望模型执行的操作,这将有助于模型给出接近你所期待的输出,并降低得到无关或不正确回复的可能性。但需要注意的是,编写清晰的指令不意味着编写简短的指令,事实上,更长的提示实际上更清晰且提供了更多的上下文…

再见2024,一个算法研发的个人年终总结

元旦将近,显然又是一年岁末。 同事开始讨论中午吃什么,以及晚上的跨年计划之类的大问题。 我开始努力回想自己的2024,秉承着毕业以来每年写个人总结的习惯, 也因为近年来自己的节奏和生活越来越快,只能在年终的节点停下来回顾下自己的历程。 前言 我打开了自己的相册,下面…

; 自动设置电脑快捷键的AutoHotkey脚本程序源代码 2025年1月1日

; 自动设置电脑快捷键的AutoHotkey脚本程序源代码 2025年1月1日 ; 自动设置电脑快捷键的AutoHotkey脚本程序源代码 2025年1月1日;======== 设置显示或者隐藏MasterSeeker和Total Commander主窗口的快捷键的AutoHotkey脚本2024.10.21 ========= ; 此脚本从此行开始 ; D:\app\Re…

记 Redisson 报错 attempt to unlock lock, not locked by current thread

原文:记一次 Redisson 线上问题 → 你怎么能释放别人的锁错误信息: attempt to unlock lock, not locked by current thread by node id: b9df1975-5595-42eb-beae-bdc5d67bce49 thread-id: 52查看日志,找到对应的堆栈信息 Exception in thread "thread0" java.la…