HTTP协议基础介绍!

请求报文组成

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

请求行:

  • 请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。

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

  • 协议名称及版本号。

请求头:

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

  • 与缓存相关的规则信息,均包含在Header中

请求体:

  • 它将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串。

    • 它承载多个请求参数的数据。
  • 不但报文体可以传递请求参数。

    • 请求URL也可以通过类似于/chapter15/user.html? param1=value1&param2=value2的方式传递请求参数。

响应报文结构

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

状态码

状态码由三位数字组成,第一个数定义了响应的类别,有五种可能取值。

1xx:指示信息,表示请求已接收,继续处理。

2xx:成功,表示请求已被成功接收、处理成功。

3xx:重定向。

4xx:客户端错误,请求有语法错误或者请求无法实现。

5xx:服务器端错误,服务器未能实现合法的请求。

301:永久重定向,在Location响应首部的值为当前的URL(隐式)。

302:临时重定向,在Location响应首部的值为新的URL(显式)。

GET和POST的区别

GET请求参数是通过URL进行传递的,POST请求的参数包含在请求体当中。

GET请求比POST请求更不安全,因为参数直接暴露在URL中,所以,GET请求不能用来传递敏感信息。

GET请求在URL中传递的参数是有长度限制的,POST对长度没有限制。

GET请求参数会完整的保留在浏览器的历史记录中,POST请求的参数不会保留。

GET请求进行URL编码(百分号编码),POST请求支持多种编码方式。

GET请求在浏览器回退的时候是无害的,POST请求会再次提交数据。

GET请求在浏览器中可以被主动Cache(缓存),而POST请求不会,可以手动设置。

GET产生一个TCP数据包,POST产生两个TCP数据包。