问题
express 下设置静态文件,我们一般使用 app.use(express.static('dist'))
可是如果当 dist 目录下文件,预先被我们 gzip 压缩后呢?
当我们访问网页的时候,发现,都是乱码???
怎么解决
方法一
手动设置 Content-Encoding
这个消息首部用来告知客户端应该怎样解码才能获取在 Content-Type 中标示的媒体类型内容
例如下例子,dist 目录下除了 json 和 gif 文件,其他都被预先 gzip 压缩过,所以添加了 Content-Encoding: gzip,用于告知客户端,这个是被 gzip 压缩过的,请用 gzip 解析
app.use(express.static('dist', {
setHeaders: function(res, path) {
// 如果不加这一行的话,json、gif 由于没有被 gzip 压缩过,反应到客户端,这两种文件反而会乱码了
if(!path.endsWith('json') && !path.endsWith('gif')) {
// 设置返回头
res.set("Content-Encoding", "gzip");
}else{}
}
}));