禁用Express Node.js中的etag标头

Raj*_*Raj 34 node.js express

我们需要etag从Node.js Express应用程序中的所有HTTP响应中删除标头.我们有一个用Express编写的Web服务API,当我们发送etags并且客户端发回if-none-match标头时,客户端会看到意外的结果.

我们试过app.disable('etag')res.removeHeader('etag'),但既不工作; 应用程序无论如何发送标头.

是否还有其他方法可以在所有响应中禁用此标头?

ale*_*lex 53

app.disable('etag') 现在应该工作,已经有一个拉动请求合并来处理这个:

https://github.com/visionmedia/express/commit/610e172fcf9306bd5812bb2bae8904c23e0e8043

更新:正如Bigood在评论中指出的那样,新的做事方式如下

app.set('etag', false); // turn off
Run Code Online (Sandbox Code Playgroud)

版本3.9.0发生更改:https://github.com/strongloop/express/releases/tag/3.9.0

有关设置etag的更多选项,请查看4.x文档:http://expressjs.com/4x/api.html#app.set

  • 有没有办法只为某些端点禁用etags?我不想在我的api端点上使用etags,但我确实想要静态内容上的etags. (9认同)

小智 23

app.disable('etag')
Run Code Online (Sandbox Code Playgroud)

这将禁用所有请求的etag标头,但不会禁用静态内容.以下是针对静态内容的:

app.use(express.static(path.join(__dirname, 'public'), {
        etag: false
}));
Run Code Online (Sandbox Code Playgroud)

  • 这很重要,因为很容易忘记 (2认同)
  • 这没有记录,但它也适用于 `res.sendFile('...', { etag: false })`。就我而言,“app.disable('etag')”和“app.set('etag', false)”不起作用。 (2认同)