注:图片均来自网络
超文本传输协议HTTP主要特点
- 支持客户/服务器模式
- 简单快速
- 程序规模小,通信速度快
- 灵活
- 允许传输任意类型的数据对象
- 无连接
- 每次连接,只处理一个请求,节省传输时间
- 无状态
- 协议对于事物处理没有记忆
HTTP请求结构:
HTTP响应结构:
请求/响应的步骤:
- 客户端连接到Web服务器
- 发送HTTP请求
- 服务器接收请求并返回HTTP响应
- 释放连接TCO连接
- 客户端浏览器解析HTML内容
在浏览器地址栏键入URL,按下回车之后经历的流程:
- DNS解析域名地址,获取对应的IP地址
- 从本地DNS缓存或者DNS服务器中获取域名的解析
- 解析域名地址,获取对应的IP地址
- TCP连接
- 三次握手
- 发送HTTP请求
- 服务器处理请求并返回HTTP报文
- 浏览器解析渲染页面
- 连接结束
- 四次挥手
HTTP状态码:
1xx:指示信息--表示请求已接受
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务端错误--服务器未能实现合法的请求
常见状态码:
200 OK:正常的返回信息。
400 BaeRequest:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,eg,输入了错误的URL。
405 Method not Allowed:请求行中指定的请求方法不能被用于请求相应的资源。
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailavle:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
GET请求和POST请求的区别:
从三个层面来解答
- Http报文层面:GET将请求信息放在URL后面,POST放在报文体中。
- 普通的HTTP都是采用明文传输的,POST请求也一样
- 数据库层面:GET符合幂等性和安全性,POST不符合。
- 幂等性表示对数据库的一次操作或多次操作,对数据结果是无影响的。
- 安全性表示不会对数据库进行修改,因此符合安全性。
- PUT请求符合幂等性,因为不会添加新的数据
- 其他层面:GET可以被缓存、被存储,而POST不行