阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js http.Server clientError 事件

      Node.js http.Server clientError 事件

      版本历史

      版本变更
      v9.4.0The rawPacket is the current buffer that just parsed. Adding this buffer to the error object of ‘clientError’ event is to make it possible that developers can log the broken packet.
      v6.0.0The default action of calling .destroy() on the socket will no longer take place if there are listeners attached for ‘clientError’.
      v0.1.94新增于: v0.1.94
      • exception < Error>
      • socket < net.Socket>

      如果客户端连接触发 ‘error’ 事件,则会在此处转发。 此事件的监听器负责关闭或销毁底层套接字。 例如,用户可能希望使用自定义 HTTP 响应更优雅地关闭套接字,而不是突然切断连接。

      默认行为是尽可能使用 HTTP 400 Bad Request 响应关闭套接字,否则立即销毁套接字。

      socket 是发生错误的 net.Socket 对象。

      const http = require('http');
      
      const server = http.createServer((req, res) => {
        res.end();
      });
      server.on('clientError', (err, socket) => {
        socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
      });
      server.listen(8000);
      

      当 ‘clientError’ 事件发生时,没有 request 或 response 对象,因此必须将发送的任何 HTTP 响应(包括响应头和有效负载)直接写入 socket 对象。 必须注意确保响应是格式正确的 HTTP 响应消息。

      err 是 Error 实例,有以下两个额外的部分:

      • bytesParsed: Node.js 可能正确解析的请求包的字节数。
      • rawPacket: 当前请求的原始数据包。

      更多内容请参考:Node.js HTTP,或者通过 点击对应菜单 进行查看;


      目录
      本文目录
      目录