NodeJS的Http报文浅析

附录:常用HTTP响应头和请求头信息对照表

  1. Node简介
  2. 第一个node程序
  3. module(模块系统)
  4. npm包管理器
  5. 模块系统优先级
  6. 认识http内置模块
  7. url内置模块
  8. path内置模块
  9. fs内置模块
  10. http模块服务端进阶
  11. http报文浅析
  12. url模块进阶
  13. path模块进阶
  14. querystring模块进阶
  15. 了解Buffer和Stream
  16. os模块
  17. Buffer模块
  18. Stream模块
  19. http模块客户端
  20. Cookie浅析

HTTP请求行、请求头、请求体浅析

HTTP请求报文解剖

HTTP请求报文由3部分组成(请求行+请求头+请求体):

NodeJS的Http报文浅析_第1张图片

下面是一个实际的请求报文:

NodeJS的Http报文浅析_第2张图片

①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST。

②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。

③是协议名称及版本号。

④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。

⑤是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数。

对照上面的请求报文,我们把它进一步分解,你可以看到一幅更详细的结构图:

NodeJS的Http报文浅析_第3张图片

HTTP请求报文头属性

报文头属性是什么东西呢?我们不妨以一个小故事来说明吧。

快到中午了,张三丰不想去食堂吃饭,于是打电话叫外卖:老板,我要一份[鱼香肉丝],要12:30之前给我送过来哦,我在江湖湖公司研发部,叫张三丰。

这里,你要[鱼香肉丝]相当于HTTP报文体,而“12:30之前送过来”,你叫“张三丰”等信息就相当于HTTP的报文头。它们是一些附属信息,帮忙你和饭店老板顺利完成这次交易。

请求HTTP报文和响应HTTP报文都拥有若干个报文关属性,它们是为协助客户端及服务端交易的一些附属信息。

HTTP响应报文解剖

HTTP的响应报文也由三部分组成(响应行+响应头+响应体):

NodeJS的Http报文浅析_第4张图片

以下是一个实际的HTTP响应报文:

NodeJS的Http报文浅析_第5张图片

①报文协议及版本;

②状态码及状态描述;

③响应报文头,也是由多个属性组成;

④响应报文体,即我们真正要的“干货”。

响应状态码

和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。

HTTP的响应状态码由5段组成:

  • 1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急…
  • 2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
  • 3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
  • 4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
  • 5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。

你可能感兴趣的:(Node.js)