node使用express搭服务器,静态资源 被阻止因为 MIME 类型(“text/html”)不匹配(X-Content-Type-Options: nosniff)
报错如图所示
描述
使用gulp作为项目构建工具,结果发现把生成的项目放到express的静态资源目录下时,发现只能加载html文件,html头部引入的js和css文件都访问不了。
过程
后来尝试在地址栏直接访问这些静态资源,发现也不成功。那直接打开本地文件好了,然后把头部引入的css、js文件修改为本地路径,发现还是访问不了。这下就疑惑了,然后百度,看scdn。还挺多人碰到这个问题的,看了几个,他们的问题主要是:
- 外链资源的地址是相对于本地的路径,放到express时忘记改为服务器访问的相对路径
- js文件有语法错误
我的解决
从上面的问题看已看出,这个问题主要是自己操作上的疏忽,和express还是项目构建工具都无关(我一度怀疑是不是我把html文件的头部和内容区域切割成两个文件,然后用gulp重新拼接导致的问题)
按照这个思路,从自己的操作上找问题,最终发现是在构建项目时,忘记让gulp把放外链资源的文件夹打包进项目里了。文件都没有放进来,express自然访问不了。然后就报错了。
折腾了一阵,结果是忘记把放css和js资源的文件夹放到服务器上面。如果你也碰到这个问题,大概率是自己某个操作出了问题,这得自己发现了。