【问题标题】:How to disable the Etag in npm express at configuration level?如何在配置级别禁用 npm express 中的 Etag?
【发布时间】:2019-04-10 14:17:58
【问题描述】:

我是 nodejs 和 npm 的新手。我的任务是在 npm express 的配置级别禁用 Etag 生成。我正在寻找答案 app.set('etag', false); // turn off 和在线类似。

在应用程序代码之外的意义上禁用,我必须在 npm 的快速配置中禁用。就像每个请求一样,我只需要从服务器获得响应为application/json,并且状态应该只是200。请帮助寻找解决方案。

示例代码:

const express = require('express')
const app = express()
const port = 9000

app.get('/proj/v1/test', (req, res) => {
// app.set('etag', false);
res.status(200).json({status: "OK"});
}
)
app.listen(port)

【问题讨论】:

  • 配置 Express 的方式是通过应用程序代码。没有外部配置。
  • @robertklep:感谢您的回复。我对我的领导说了同样的话,但他说添加“app.set('etag','false');”在代码中是错误的。他告诉我停止在 express 的配置级别生成 Etag。就像不应该发生 Etag 生成一样。通过这种方式,HTTP 应该每次都向服务器寻求响应。
  • 也许他的意思是在您放置它的代码位置(在请求处理程序中)添加app.set('etag', false) 是错误的?因为通常,它是在更高级别完成的(在您的示例代码中,before app.get(...))。
  • 实际上他的概念是他根本不希望我在代码中使用app.set('etag', false)。相反,他告诉我对experess/npm 进行配置更改。 package-lock.json 文件的“etag 和 express”键有什么我需要更改的吗?
  • 不,它看起来不像是在外部(从应用程序外部)配置 Express 的任何方式。此外,直接更改模块代码是维护的噩梦。我不明白他为什么不想使用正确的(记录在案的)禁用 etags 的方式。

标签: express npm etag


【解决方案1】:

罗伯特感谢您的帮助。我的负责人提到了中间件概念。他需要的实际响应是验证每个请求。我用下面的代码修复了

const express = require('express');
const app = express();
const port = 9000;

app.use((req, res, next) => {
  app.disable('etag');
  console.log('Etag removed');
next();
})

app.get('/proj/v1/test', (req, res) => {
res.status(200).json({status: "OK"});
}
)

app.get('/proj/v1/test2', (req, res) => {
res.status(200).json({version: "1"});
}
)
console.log('Server started');
app.listen(port);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2018-05-10
    • 1970-01-01
    • 2019-07-28
    相关资源
    最近更新 更多