快递中的`onconnect`事件在哪里?

时间:2017-01-16 00:10:33

标签: javascript node.js express

使用"表达"我设置了这个中间件:

$('.btn').click(function() {
  var buttonValue = $(this).val();
  var optionValue = $("#Sel option:contains("+buttonValue+")").val();
  $("#Sel").val(optionValue);
});

$('.btn2').click(function() {
  $('#Sel').prop('selectedIndex', 0);
});

以便在每个请求中,它的app.use(function(request, response, next) { console.log(request.headers["user-agent"]); // etc. }); 标题都显示在控制台中 但是你现在可能是一团糟user-agent

  

Mozilla / 5.0(Linux; Android 7.1.1; Nexus 5X Build / NMF26F)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 56.0.2924.59 Mobile Safari / 537.36

我真的想每个连接输出一次标题 - 而不是每次请求都输出。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

每次对HTTP堆栈(服务器)的请求每次都建立一个新连接..这就是HTTP协议的工作方式

编辑:

如果您需要跟踪访问者,您可以使用Cookie或更好的会话。这些将在每次请求时传送给您,当您没有找到任何附件时,您知道这是一个新的连接'

您可以将express-session用于此目的

答案 1 :(得分:1)

我认为这不会在express中公开,这是一件好事,因为你要处理的最后一件事就是处理HTTP 1.1自己保持活着。

我会将user-agent记录在一次发生的请求上,可能是用户身份验证请求或某种类型的请求。

编辑:要扩展第二部分,标准的auth流程之一可以如下:

  1. 用户发布凭据
  2. 服务器返回令牌
  3. 用户使用令牌访问API
  4. 因此,您可以在用户获取令牌时记录user-agent,并在每个其他请求中记录令牌。这样,您可以在初始身份验证请求中轻松搜索日志文件中的用户代理。此令牌可以是会话ID,使用类似express-session的包,或更强大的身份验证令牌。

    一旦用户通过身份验证,您还可以在会话对象服务器端存储user-agent值,并添加在每个请求的trace日志中记录会话的中间件。这样,您可以在每个请求上启用会话记录,并在需要时查看user-agent