【问题标题】:How to get list of HTTP response headers currently set in Node/Express?如何获取当前在 Node/Express 中设置的 HTTP 响应标头列表?
【发布时间】:2015-12-20 08:29:54
【问题描述】:

据我了解,当您在 node/express 或其他方式中构建 http 响应时,该过程主要包括两个非顺序步骤:定义标头和构建主体。标头包括 Set-Cookie 标头。在 Express 中,响应对象可以使用以下方法来设置标头:

res.append(); // To append/create headers
res.cookie(); // A convenience method to append set-cookie headers.

由于标头仅被缓冲并且在发送响应之前不会实际发送,是否有任何方法或机制可以获取当前设置的标头列表及其值,例如:

 headers = res.getHeaders(); //Returns an object with headers and values
 headers = res.getHeaders('Set-Cookie'); // To get only select headers

【问题讨论】:

    标签: node.js express http-headers


    【解决方案1】:

    试试

    console.log("res._headers >>>>>>>" + JSON.stringify(res._headers));
    

    【讨论】:

    • 适用于 NodeJS v6.9.2 32 位。请注意,这不是公共 API。你写的任何依赖于此的东西都应该有一个自动化的单元测试。
    • This is deprecated。查看下面的解决方案。
    【解决方案2】:

    我已经成功地使用response.getHeaders() (available since Node 7.7.0)on-headersmodule 来检查发送的内容(包括cookie)。像这样的:

    import express from 'express'
    import onHeaders from 'on-headers'
    
    const router = express.Router()
    
    function responseDebugger() {
      console.log(JSON.stringify(this.getHeaders()))
    }
    
    router.post('/', (req, res, next) => {
      onHeaders(res, responseDebugger)
    
      res.json({})
    })
    
    export default router
    

    【讨论】:

    • ^ 经过数小时努力从响应对象读取 cookie 后,这有所帮助 ^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2012-06-19
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    相关资源
    最近更新 更多