HTTP协议
- HTTP 负责 web 服务器与 web 浏览器之间的通信。
- HTTP 用于从 web 客户端(浏览器)向 web 服务器发送请求,并从 web 服务器向 web 客户端返回内容(网页)。
HTTP的方法
GET方法以及POST方法,当然有些时候,看情况说不定,后端给你写了个DELETE方法,这些都有,但问题不大,最主要的还是 GET 和 POST 方法
GET和POST不同点
- GET在浏览器回退时是无害的,而POST会再次提交请求。
- GET产生的URL地址可以被书签收藏,而POST不可以。
- GET请求会被浏览器主动cache,而POST不会,除非手动设置。
- GET请求只能进行url编码(application/x-www-form-urlencoded),而POST支持多种编码方式
(application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多种编码。)。
-
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
-
GET请求在URL中传送的参数是有长度限制的(因为浏览器对URL的长度有限制,最大长度是 2048 个字符),而POST没有。
-
对参数的数据类型,GET只接受ASCII字符,而POST没有限制(允许二进制数据)。
-
GET参数通过URL传递,参数之间以&相连,POST放在Request body中,所以GET请求不安全,敏感信息会暴露在url上。
-
GET和POST还有一个重大区别是发送数据包数量不同,GET 请求产生一个 TCP 数据包,而POST请求产生俩个 TCP 数据包,1、对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
2、而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
-
POST 比 GET 安全,因为数据在地址栏上不可见,然而,从传输的角度来说,他们都是不安全的,因为 HTTP 在网络上是明文传输的,只要在网络节点上捉包,就能完整地获取数据报文,只有使用 HTTPS 才能加密安全
GET
- 浏览器发起请求 TCP 连接(第一次握手)
- 服务器响应进行 TCP 连接(第二次握手)
- 浏览器确认,并发送 GET 请求头和数据(第三次握手)
- 服务器返回 200 OK响应
POST
- 浏览器发起请求 TCP 连接(第一次握手)
- 服务器响应进行 TCP 连接(第二次握手)
- 浏览器确认,并发送 POST 请求头(第三次握手)
- 服务器返回100 Continue响应
- 浏览器发送数据
- 服务器返回 200 OK响应
从上面我们了解到HTTP协议是基于TCP/IP协议的一个子协议,所以GET 和 POST 请求的本质是相同的,都是TCP/IP请求。
通俗来说GET就是客户端向服务端获取想要的东西,POST则是客户端需要去给服务端一些东西,然后他才返回给客户端想要的东西
常见HTTP状态码
1xx : 消息,这一类型的状态码,代表请求已被接受,需要继续处理。但是一般服务器禁止向客户端发送此类状态码;
2xx : 成功,这一类型的状态码,代表请求已成功被服务器接收、理解、并接受;
3xx : 重定向,这类状态码代表需要客户端采取进一步的操作才能完成请求;
4xx : 请求错误,这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理;
5xx : 服务器错误,这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。
下面举一些例子
200 : 成功,表示访问成功,正常状态。
201 : 请求成功并且服务器创建了新的资源
202 : 服务器已接受请求,但尚未处理
203 : 请求正在被执行,但还没有处理完
204 : 服务器成功处理了请求,但没有返回任何内容
301 : 永久移动,表示本网页已经永久性的移动到一个新的地址,在客户端自动将请求地址改为服务器返回的新地址。
302 : 临时重定向,表示网页暂时性的转移到一的新的地址,客户端在以后可以继续向本地址发起请求。
303 : 表示必须临时重定向,并且必须使用GET方式请求。
304 : 重定向至浏览器本身,当浏览器多次发起同一请求,且内容未更改时,使用浏览器缓存,这样可以减少网络开销。
401 : 表示协议格式出错,可能是此IP地址被禁止访问该资源,与403类似。
403 : 表示没有权限,服务器拒绝访问请求。
404 : 这是最常见的错误,表示找不到系统资源,但是只是暂时性地。
500 : 表示服务器程序错误,一个通用的错误信息。
503 : 表示服务器繁忙,或者服务器负载,通常这只是一个临时状态。
以上根据大佬文章编写