HTTP协议基础介绍!
HTTP协议基础介绍!
月伴飞鱼请求报文组成
HTTP请求报文由3部分组成: 请求行 + 请求头 + 请求体
请求行:
请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。
请求对应的URL地址,它和报文头的Host属性组成完整的请求URL。
协议名称及版本号。
请求头:
是HTTP的报文头,报文头包含若干个属性,格式为:属性名:属性值,服务端据此获取客户端的信息。
与缓存相关的规则信息,均包含在Header中
请求体:
它将一个页面表单中的组件值通过
param1=value1¶m2=value2
的键值对形式编码成一个格式化串。
- 它承载多个请求参数的数据。
不但报文体可以传递请求参数。
- 请求URL也可以通过类似于
/chapter15/user.html? param1=value1¶m2=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数据包。