小猪站长帮你总结HTTP请求方式
发表于 2019-08-03 15:44
HTTP请求方法,我们可能已经用得很好了,但是就理论原理而言,代码规范可能还不是很熟悉,即所谓指下生风,胸无点墨。今天,我们就说这个HTTP请求方法都有什么,值得一试。
根据HTTP标准,HTTP请求可以使用多种请求方法。因此,HTTP定义了一组表示要在给定资源上执行的操作的请求方法。虽然这些方法名可以是名词,但是我们更愿意将这些请求方法称为“HTTP谓词”,因为它们的每个请求方法名根据我们的操作实现不同的语义。
上表列出了HTTP中包含的15种形式的请求。今天,我们主要对前端开发中常用的五种请求方法做具体的说明。
常用的 HTTP 请求方式
对于前端开发来说,我们最常用的 HTTP 请求方式主要有以下五种:
GET :从指定的服务器中获取数据;
POST :提交数据给指定的服务器处理;
DELETE :从指定的服务器中删除数据;
PUT :用于更新某个数据的完整内容;
PATCH :用于更新某个数据的部分内容;
GET 和 POST 的 区 别
GET和POST是HTTP中最常用的两种请求方式,我们通过下面的表格将GET和POST之间的区别做了一个对比。
为什么GET比POST快
post请求包含更更多的请求头
因为POS需要在请求的body部分包含数据,所以会多了几个数据描述部分的首部字段(如:content-type ),但这其实是微乎其微的。
post将在实际接收数据之前将请求头发发送到服务器进行确认,然后实际发送数据。
post请求的过程
1. 浏览器请求 TCP 连接(第一次握手);
2. 服务器答应进行 TCP 连接(第二次握手);
3. 浏览器确认,并发送POST请求头(第三次握手,这个报文比较小,所以 HTTP 会在此时进行第一次数据发送);
4. 服务器返回 100 Continue 响应;
5. 浏览器发送数据;
6. 服务器返回 200 OK 响应;
GET 请求的过程:
1. 浏览器请求TCP连接(第一次握手);
2. 服务器答应进行TCP连接(第二次握手);
3. 浏览器确认,并发送 GET 请求头和数据(第三次握手,这个报文比较小,所以 HTTP会在此时进行第一次数据发送);
4. 服务器返回200 OK响应;
也就是说, GET 的总耗是 POST 的 2/3 左右(网上已经有网友进行过测试)。
GET 会将数据缓存起来,而POST不会
经测试,Chrome和Firefox下如果检测到GET请求的是静态资源,则会缓存,如果是数据,则不会缓存。但IE 是什么都会缓存起来。
POST 不能进行管道化传输
HTTP会话需要建立TCP连接才能进行通信。但是,如果每个连接只根据HTTP的特性执行一个HTTP会话,则连接过程太大,因此会出现持久连接。然而,仅有持久连接是不够的。在HTTP / 1.1中,有一种方法可以优化管道通信的速度:在发出第一个请求之后,将需要发送到服务器的所有请求放入输出队列。第二个请求不是等待服务器的响应,而是立即发送。
但这种方法有一个问题:它不安全。如果管道中有10个连接,在9个连接断开之后,服务器会突然告诉您连接已经关闭。此时,即使客户端收到了前9个请求的回复,这9个请求的内容也会被清空,也就是白色的忙…此时,需要重新发送客户机的9个请求。
对于幂等请求(例如GET,每次发送几次都是相同的结果,这并不重要),但是如果是POST这样的非幂等请求(例如payment,发送更多的次数是很糟糕的),这肯定行不通。因此,POST请求不能通过管道通信。
对 GET 传参最大长度的误区
首先,对于GET传参我们要明确以下几点:
1.HTTP协议并未规定GET和POST的长度限制;
2. GET 的最大长度限制是因为浏览器和web服务器限制了URL的长度;
3. 不同的浏览器和web服务器,限制的最大长度不一样;
误区:
1. 首先,即使GET有长度限制,它也是整个URL的长度,而不仅仅是参数值数据长度。HTTP协议从不指定GET/POST请求长度限制或参数长度限制。
2. 所谓的请求长度限制由浏览器和web服务器决定和设置。不同浏览器和web服务器的设置是不同的,这取决于每个浏览器制造商的规范,或者可以根据web服务器进行处理。如果超过最大长度,大多数服务器将被截断,一些服务器将报告414个错误。
各浏览器和web服务器最大长度总结
浏览器
IE :IE浏览器(Microso!(Internet Explorer)的URL长度限制为2083 (2K+53)。如果超过这个限制,它将自动被截断(如果表单被提交,submit按钮将无法工作)。
Firefox :火狐浏览器的URL长度限制为65536字符,但实际上有效的 URL最大长度不少于100000个字符。
Chrome :谷歌浏览器的URL长度限制为8182个字符。
Safari :苹果浏览器的URL 长度限制至少为80000字符
Opera :Oppen浏览器的URL长度限制为190000个字符。当您在Opera9地址栏中输入190000个字符时,仍然可以正常编辑。
服务器
Apache :Apache能接受URL长度限制为8192字符 。
IIS: Microso !Internet Information Server (IIS)接受的URL长度限制为16384个字符。
PUT 和 PATCH 的 区 别
PUT 和 PATCH 两种请求方式都是用于更新数据,但是两者之间依然有存一些区别。
DELETE
DELETE就是通过HTTP请求删除指定的的URL上的资源, DELETE请求一般返回3 种状态码。
评论 (0人参与)
最新评论