使用"express“,我设置了这个中间件:
app.use(function(request, response, next) {
console.log(request.headers["user-agent"]);
// etc.
});因此,在每次请求时,控制台中都会显示它的user-agent头。
但是现在你知道user-agent会是多么的混乱:
Mozilla/5.0 (Linux;Android7.1.1;Nexus5XBuild/NMF26F) AppleWebKit/537.36 (KHTML,类似壁虎) Chrome/56.0.2924.59 Mobile /537.36
我真的想在每个连接上输出一次头,而不是每个请求。
我该怎么做?
发布于 2017-01-16 00:14:12
每次对HTTP堆栈(服务器)的请求都建立一个新的连接。HTTP协议就是这样工作的
编辑:
如果您需要跟踪访问者,您可以使用cookie或更好的会话。每个请求都会发送给你,当你找不到附件时,你就知道这是一个“新连接”。
为此,可以使用特快会议。
发布于 2017-01-16 00:17:31
我不认为这是在express中暴露出来的,这是一件好事,因为您最不想处理的就是自己处理HTTP1.1。
我会将user-agent记录在一次发生的请求上,可能是在用户身份验证请求或类似的请求上。
编辑:要对第二部分进行扩展,标准流程之一可以如下所示:
因此,您可以在用户获得令牌时记录user-agent,并在每个其他请求中记录该令牌。通过这种方式,您可以轻松地在初始身份验证请求中搜索日志文件中的用户代理。这个令牌可以是会话ID,可以使用像特快会议这样的包,也可以是更健壮的身份验证令牌。
用户身份验证后,您还可以将该user-agent值存储在会话对象服务器端,并在每个请求上添加将会话记录在trace日志中的中间件。通过这种方式,您可以在每个请求上启用会话日志记录,并在需要时在那里查看user-agent。
https://stackoverflow.com/questions/41667783
复制相似问题