1

我正在尝试使用自定义标头运行示例应用程序,但是当我尝试运行此应用程序时,它会将错误抛出为“内容编码错误”。我想在我的应用程序上添加这个自定义标头以使用 grunt-gzip 压缩。谁能告诉为什么会出现这个错误以及如何解决它?

var express = require('express'); var app = express();

app.get('/', function(req, res){
  res.setHeader('Content-Encoding', 'gzip')
  res.send('hello world');
});

app.listen(3001)
4

2 回答 2

2

您的代码的问题是您试图发送纯文本并告诉浏览器期待 gzip 压缩的内容。

下面的代码将有助于启动 gzip 编码:

var zlib = require('zlib');
app.get('/', function(req, res){
   res.setHeader('Content-Encoding', 'gzip')
   res.setHeader('Content-Type', 'text/plain')
   var text = "Hello World!";
   var buf = new Buffer(text, 'utf-8'); 
   zlib.gzip(buf, function(_, result) { 
      res.send(result); 
   });
});
app.listen(3001)
于 2018-09-26T09:08:47.817 回答
2

响应标头只会告诉您的客户期望什么样的响应。要实际压缩它,您需要告诉 Express 这样做。假设您使用的是 Express 4+,则需要单独安装该软件包:

npm 安装压缩 --save

在您的代码中:

var compress = require("压缩");

在 app.get() 之前,写: app.use(compress());

Express 现在将压缩所有响应。

于 2016-03-07T14:40:28.227 回答