(一)Http基本概念:
HTTP:超文本传输协议:
- 支持客户/服务器模式:工作于客户端服务端架构之上,浏览器作为客户端通过URL向浏览器服务端和WEB服务端发送请求,WEB服务端根据请求发送相应信息
- 简单快速:只需要传输请求方法和路径
- 灵活:允许传输任意类型的对象
- 无连接:限制每次连接只处理一个请求
- 无状态:对于事物处理无记忆能力
HTTP的请求结构:
分为三个部分:请求行,请求头部,请求正文:
请求头部的空行是必须的
对某个HTTP请求抓包:
第一行为请求行,GET为请求方法,之后是URL,协议版本为HTTP/1.1,
之后是请求头:从Host到Cookie
HTTP响应报文结构:状态行,响应头部,响应正文
(二)请求响应相关问题:
1.请求响应步骤
- 客户端连接到Web服务器:一般与服务器的80端口建立连接
- 发送HTTP请求:通过TCP套接字,发送文本请求
- 服务器接收请求并返回HTTP响应:服务器解析请求,定位请求资源
- 释放连接TCP连接:若连接模式为close,服务器主动关闭,客户端被动关闭,若连接模式为keep-alive,连接会保持一段时间
- 客户端浏览器解析HTML内容:
2.在浏览器地址键入URL,按下回车后的流程:
- DNS解析:浏览器根据URL逐层查询浏览器缓存,查询域名所对应的IP地址,从进到远依次是浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,域名服务器缓存,顶级域名服务器缓存,从哪个缓存查询到IP则直接返回,不再查询
- TCP连接:根据IP与80端口三次握手建立连接
- 发送HTTP请求:该请求发送给服务器
- 服务器处理请求并返回HTTP报文:
- 浏览器解析渲染页面
- 连接结束,释放TC连接
3.常见的HTTP状态码:
- 1xx:指示信息,表示请求已接收,继续处理
- 2xx:成功-表示请求已被成功接收,理解,接受
- 3xx重定向-要完成请求必须进行进一步的操作
- 4xx:客户端错位-请求有语法错位或请求无法实现
- 5xx:服务器端错误,服务器未能实现合法的请求
常见的状态码分析: - 200ok:返回正常信息
- 400BadRequest:客户端请求有语法错误,不能被服务器所理解
- 401Unauthorized:请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
- 403Forbidden:服务器收到请求,但是拒绝提供服务
- 404NotFound:请求资源不存在,rg,输入了错位的URL
- 500InternalServerError:服务器发生了不可预期的错误
- 503ServerUnavailable:服务器当前不能处理客户端的请求。一段时间后可能恢复正常
4.GET请求与POST请求的区别:
- Http报文层面:GET将请求信息放在URL,POST放在报文体中
如下为GET的请求信息,放在URL中:
如下为POST的请求信息:
- 数据库方面:GET符合幂等性和安全性,POST不符合
幂等性:对数据库的一次或多次操作获得的结果时一致的
安全性:未改变数据库的数据 - GET请求可以被缓存,被储存,POST不行
5.Coolie与Session的区别:
Cookie:客户端的解决方案
- 由服务器发送给客户端的特殊信息,以文本的形式放在客户端
- 客户端再次请求时,会把Cookie回发
- 服务器收到后,会解析Cookie生成与客户端相对应的内容
Session简介: - 服务器端的机制,在服务器上保存的信息
- 解析客户端请求并操作session id,按需求保存状态信息
实现方式:1.使用Cookie实现 2.使用URL回写实现
区别:
- Cookie数据存放在客户 的浏览器上,Session存放在服务器上
- Session相对于Cookie安全
- 若考虑减轻服务器的负担,应使用Cookie