需要添加一个 header 作为响应 header,键和值为 "Content-Encoding" 作为 "gzip"

Need to add a header in response header with the key and value as "Content-Encoding" as "gzip"

我正在尝试 运行 具有自定义 header 的示例应用程序,但是当我尝试 运行 此应用程序时,它抛出错误 "Content Encoding Error"。我想在我的应用程序中添加此自定义 header 以使用 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)

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

npm 安装压缩 --save

在您的代码中:

var compress = require("compression");

在app.get()之前写: app.use(压缩());

Express 现在将压缩所有回复。

您的代码存在问题,您正在尝试发送纯文本并告诉浏览器期待 gzipped 内容。

以下代码有助于启动 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)