Node.js 需要在响应标头中添加一个标头,其键和值为;内容编码“;作为「;gzip“;

Node.js 需要在响应标头中添加一个标头,其键和值为;内容编码“;作为「;gzip“;,node.js,gruntjs,gzip,content-encoding,Node.js,Gruntjs,Gzip,Content Encoding,我正在尝试使用自定义头运行示例应用程序,但当我尝试运行此应用程序时,它会将错误作为“内容编码错误”抛出。我想在我的应用程序中添加这个自定义头来使用grunt gzip压缩。有人能告诉我为什么会出现这个错误以及如何解决它吗 var express=需要(“express”); var-app=express() 响应头只会告诉您的客户端预期的响应类型。要实际压缩它,需要告诉Express这样做。假设您使用的是Express 4+,则需要单独安装该软件包: npm安装压缩--保存 在代码中: var

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

var express=需要(“express”); var-app=express()


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

npm安装压缩--保存

在代码中:

var压缩=要求(“压缩”)

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


Express现在将压缩所有响应

代码的问题在于,您试图发送纯文本,并告诉浏览器预期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)

您正确地设置了
Content Encoding:gzip
标题,但也没有正确地提供gzip内容(即,
hello world
不是gzip算法的有效输出)。这不是一个答案,因为我不知道如何解决它(虽然搜索会给出一些有希望的结果)可能的重复,但我不是100%确定可能的重复必须尝试搜索之前,希望这里是答案Yw,很高兴我可以帮助。但如果你预压缩文件(例如,与网页包)。我遇到了同样的问题,如果我将内容编码头设置为gzip,express不喜欢它。我需要更多信息。这将在节点12后炸毁internet explorer 11。需要压缩才能使用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)