1 HTTP协议的解读
1.1 HTTP和HTTPS区别
HTTP协议:超文本传输协议是互联网上应用最为广泛的一种网络协议。所有的HTML文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法
HTTPS协议:HTTP协议的安全版,在HTTP下加入SSL层
ssl(Secure Sockets Layer 安全套接层)主要用于web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全
1.2 HTTP请求过程
client:更为具体代表浏览器、程序等,通过某个程序发送请求就是客户端
url:统一资源定位符,是用于完整地描述Internet上网页和其他资源地址的一种标识方法
- 当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要分为”Get“和”Post“两种方法
- 当在浏览器输入URL http://www.baidu.com时,浏览器发送一个Request请求去获取http://www.baidu.com的html文件,服务器把Response文件对象发送回给浏览器
- 浏览器分析Response中的HTML,发送其中引用了很多其他文件,比如Images文件,CSS文件、Js文件,浏览器会自动再次发生Request去获取图片,CSS文件或JS文件
- 当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来
1.3 HTTP请求信息
在浏览器中输入URL地址,访问某个网站,发送一个HTTP请求到服务器的请求消息,包括以下格式:
请求行 请求头部 空行 请求数据
访问网址不是只有一次请求 ,如下图:不单单只请求了www.baidu.com
ip地址存在端口,https默认端口443
1.4 HTTP响应信息
服务器接收到请求后,返回的HTTP响应由四个部分组成,分别:
状态行 消息报头 空行 响应正文
状态行:表示返回数据状态是什么情况
HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding:gzip
Content-Type: text/html; charset=utf-8 (返回类型格式如果返回是json格式,则为:application/json)
Date: Thu, 25 Jul 2024 09:00:44 GMT
Isprivate:1
Server:BWS/1.1
Traceid:1721898044288966759412702887217014994671
Transfer-Encoding:chunked
X-Ua-Compatible:IE=Edge,chrome=1
X-Xss-Protection:1;mode=block
1.4 HTTP响应状态码
常见响应状态码
#1xx:信息
100 continue
服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求#2xx:成功
200 0K
请求成功(其后是对GET和POST请求的应答文档)
201 Created
请求被创建完成,同时新的资源被创建。# 3xx:重定向
300 Multiple choices
多重选择。链接列表。用户可以选择某链接到达目的地。最多允许五个地址。
#4xx:客户端错误
404:页面找不到
#5xx:服务器错误
500 Internal Server Error
请求未完成。服务器遇到不可预知的情况。
502 Bad Gateway
请求未完成。服务器从上游服务器收到一个无效的响应。
503 Service unavailable
请求未完成。服务器临时过载或当机。
504 Gateway Timeout
网关超时。
505 HTTP Version Not supported
服务器不支持请求中指明的HTTP协议版本
1.5 HTTP请求方法
根据HTTP标准,HTTP请求可以使用多种请求方法。
序号 | 方法 | 描述 |
1 | GET | 用于获取资源(没有请求体),,如浏览器查询 |
2 | POST | 向指定资源提交数据进行处理请求-更新资源(如提交表单或上传文件)数据被包含在请求体中,POST请求可能会导致新的资源的建立或者已有资源的修改,如登录注册 |
3 | PATCH | 用于更新服务器的数据(局部更新) |
4 | DELETE | 用于服务器删除指定的数据 |
5 | PUT | 用于更新服务器的数据(数据整体更新) |
HTTP请求常用的 Get和 Post 两种方法
GET是从服务器上获取数据,POST是向服务器传送数据
GET和POST区别:
GET请求参数显示,都显示在浏览器网址URL上,HTTP服务器根据该请求所包含URL中的响应内容,即“Get"请求的参数是URL的一部分。例如: http://www.baidu.com/s?wd=Chinese&tt=9999(带问号:query string查询字符串)
POST请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,通常用来向HTTP服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等),请求的参数类型包含在“Content-Type”消息头里,指明该消息体的媒体类型和编码(放到body请求体中,也可以放到query string)
Get请求不安全,POST请求也是不安全post相对安全,因为其放到body当中肉眼看不到