【问题标题】:Access the time stamp of a HTTP request in Node.js在 Node.js 中访问 HTTP 请求的时间戳
【发布时间】:2015-05-27 17:07:50
【问题描述】:

有没有办法访问将 HTTP 请求发送到 Node.js 服务器的时间戳?

类似:

app.post('', function (req, res) {
    console.log(req.date);   //or
    console.log(req.timestamp);
}

我尝试了几件事,已经将整个 req 对象打印到控制台,但没有找到时间戳属性。我必须手动发送时间戳吗?我以为它已经是 HTTP 请求的一部分了。

【问题讨论】:

  • 很好奇为什么不在服务器端做new Date()。我知道您可能想要他们“发送”它,但知道您何时真正收到它可能很有价值,而且任何人都可以在 HTTP 请求中欺骗日期

标签: node.js express request timestamp


【解决方案1】:

request headers 中有日期,可用于检索时间戳。

如果您使用的是 Express-4.x,您可以使用 req.get(headerName) 获取它。

如果您使用的是节点 http 模块,请尝试执行 console.dir(req.headers)。如果它可用,你可以从req.headers["Date"]获得它

只要您的时间戳是从客户端通过网络发送的,这一切都是有效的。还要检查请求(比方说 Chrome 开发工具网络)并检查发送的所有标头。

【讨论】:

  • 已经尝试过req.headers。它没有列出“日期”当我尝试req.headers["Date"] 时,它返回“未定义”。所以我猜它不是随 HTTP 请求一起发送的吧?
  • 从您的浏览器中检查一次。转到开发工具(最好按 F12),转到网络选项卡(在 chrome 中,对于其他浏览器,请找到类似的选项卡)然后点击 url。应该列出您的请求。检查标题。
  • 我看不出他有什么理由不这样做。客户端发送请求,服务器服务器处理请求并响应。我认为检查哪些客户端(在本例中为 browser )已通过网络发送是完全可以的。如需进一步阅读client-server architecture
  • 很多时候req没有附加发送时间戳。 OP 需要在服务器端测量
  • @CharlesW。我相信你的意思是'时间戳附在请求中'。如果是这样,你是对的,请阅读最后一段,它在那里提到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
相关资源
最近更新 更多