http.IncomingMessage类


IncomingMessage 对象由 http.Serverhttp.ClientRequest 创建,并作为第一参数分别递给 'request''response' 事件。它可以用来访问响应状态,报头和数据。

它实现了可读流接口,以及下面的其他事件、方法和属性。

‘close’ 事件

function () { }

表明基础连接已关闭。跟 'end' 一样,这个事件对于每个响应只会触发一次。

message.httpVersion

在服务器请求的情况下,HTTP 版本号由客户端发送。在客户端响应的情况下,HTTP 版本由所连接到服务器决定。也许是 '1.1''1.0'

同样,message.httpVersionMajor 是第一个整数,message.httpVersionMinor 是第二个整数。

message.url

仅适用于从 http.Server 获得的请求。

请求的 URL 字符串。这仅包含实际存在的 HTTP 请求的 URL。如果请求是:

  1. GET /status?name=ryan HTTP/1.1\r\n
  2. Accept: text/plain\r\n
  3. \r\n

那么 request.url 会是:

  1. '/status?name=ryan'

如果你想将 URL 解析成其组成部分,你可以使用 require('url').parse(request.url)。例如:

  1. $ node
  2. > require('url').parse('/status?name=ryan')
  3. {
  4. href: '/status?name=ryan',
  5. search: '?name=ryan',
  6. query: 'name=ryan',
  7. pathname: '/status'
  8. }

如果你想从查询字符串中提取参数,你可以使用 require('querystring').parse 函数,或传递 true 作为 require('url').parse 的第二个参数。例如:

  1. $ node
  2. > require('url').parse('/status?name=ryan', true)
  3. {
  4. href: '/status?name=ryan',
  5. search: '?name=ryan',
  6. query: {
  7. name: 'ryan'
  8. },
  9. pathname: '/status'
  10. }

message.socket

与此连接相关联的 net.Socket 对象。

通过 HTTPS 的支持,使用 request.socket.getPeerCertificate() 获取客户端的认证信息。

message.method

仅适用于从 http.Server 获得的请求。

请求方法为字符串。只读。例如:'GET''DELETE'

message.header

请求/响应头的对象。

键值对的报头名称和值。报头名称为小写。例如:

  1. // Prints something like:
  2. //
  3. // { 'user-agent': 'curl/7.22.0',
  4. // host: '127.0.0.1:8000',
  5. // accept: '*/*' }
  6. console.log(request.headers);

原报头按以下方式根据不同的头名进行重复处理:

  • 重复 ageauthorizationcontent-lengthcontent-typeetagexpiresfromhostif-modified-sinceif-unmodified-sincelast-modifiedlocationmax-forwardsproxy-authorizationrefererretry-after 或已丢弃的 user-agent

  • set-cookie 始终是一个数组。重复被添加到队列。

  • 对于所有其他头,其值使用“,”相连。

message.trailers

请求/响应报尾对象。只在 'end' 事件时填入。

message.rawHeaders

接收到的原始请求/响应头字段列表。

注意,该键和值是在同一列表中。它不是一个元组列表。偶数偏移量为键,奇数偏移量为对应的值。

报头名称没有转换为小写,也没有合并重复的头。

  1. // Prints something like:
  2. //
  3. // [ 'user-agent',
  4. // 'this is invalid because there can be only one',
  5. // 'User-Agent',
  6. // 'curl/7.22.0',
  7. // 'Host',
  8. // '127.0.0.1:8000',
  9. // 'ACCEPT',
  10. // '*/*' ]
  11. console.log(request.rawHeaders);

message.rawTrailers

接收到的原始的请求/响应报尾的键和值。只在 'end' 事件时填入。

message.statusCode

仅适用于从 http.ClientRequest 获得响应。

3位 HTTP 响应状态码。如,404

message.statusMessage

仅适用于从 http.ClientRequest 获得响应。

HTTP 响应状态消息(简短的原因)。如,OKInternal Server Error

message.setTimeout(msecs, callback)

  • msecs {Number}

  • callback {Function}

调用 message.connection.setTimeout(msecs, callback)

返回 message