【问题标题】:Need to add a header in response header with the key and value as "Content-Encoding" as "gzip"需要在响应标头中添加一个标头,其键和值为“Content-Encoding”为“gzip”
【发布时间】:2023-03-10 00:54:01
【问题描述】:

我正在尝试使用自定义标头运行示例应用程序,但是当我尝试运行此应用程序时,它会将错误抛出为“内容编码错误”。我想在我的应用程序上添加这个自定义标头以使用 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)

【问题讨论】:

标签: node.js gruntjs gzip content-encoding


【解决方案1】:

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

npm 安装压缩 --save

在您的代码中:

var compress = require("压缩");

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

Express 现在将压缩所有响应。

【讨论】:

  • 嗯,很高兴我能帮上忙。
  • 但是如果你预压缩了文件(例如使用 webpack)会怎样。如果我将内容编码标头设置为 gzip,我遇到了同样的问题,即 express 不喜欢它
  • 需要更多信息在这里。这将在节点 12 之后炸毁 Internet Explorer 11。需要压缩才能使用 gzip 而不是放气。
【解决方案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)

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 2017-09-02
    • 1970-01-01
    • 2015-12-13
    • 2020-02-11
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多