GET和POST请求的区别(超详细)

相信很多小伙伴在面试的过程中,总会被面试官问道:“请你回答一下GET请求和POST请求的区别?”

大家的回答一般都是如下图:

 1.get请求一般是去取获取数据(其实也可以提交,但常见的是获取数据);
post请求一般是去提交数据。

2.get因为参数会放在url中,所以隐私性,安全性较差,请求的数据长度是有限制的,
不同的浏览器和服务器不同,一般限制在 2~8K 之间,更加常见的是 1k 以内;
post请求是没有的长度限制,请求数据是放在body中;

3.get请求刷新服务器或者回退没有影响,post请求回退时会重新提交数据请求。

4.get请求可以被缓存,post请求不会被缓存。

5.get请求会被保存在浏览器历史记录当中,post不会。get请求可以被收藏为书签,因为参数就是url中,但post不能。它的参数不在url中。

6.get请求只能进行url编码(appliacation-x-www-form-urlencoded),post请求支持多种(multipart/form-data等)。
 

对于有了2年以上开发经验的小伙伴来说,光回答这几点是不够滴。接下来,我就告诉大家可以补充以下几点:

在这里插入图片描述

1.报文上的区别
GET 和 POST 只是 HTTP 协议中两种请求方式,所以在传输上,没有区别,因为HTTP 协议是基于 TCP/IP 的应用层协议报文格式上,不带参数时,最大区别仅仅是第一行方法名不同,一个是GET,一个是POST带参数时报文的区别呢?在约定中,GET 方法的参数应该放在 url 中,POST 方法参数应该放在 body 中,举个例子,如果参数是 name=qiming.c, age=22。
GET 方法简约版报文可能是这样的

GET /index.php?name=qiming.c&age=22 HTTP/1.1
Host: localhost

POST 方法简约版报文可能是这样的


POST /index.php HTTP/1.1

Host: localhost


Content-Type: application/x-www-form-urlencoded name=qiming. c&age=22

2.GET 方法参数写法是固定的吗?
在约定中,一般我们的参数是写在 ? 后面,用 & 分割。
我们知道,解析报文的过程是通过获取 TCP 数据,用正则等工具从数据中获取 Header 和 Body,从而提取参数。
也就是说,我们可以自己约定参数的写法,只要服务端能够解释出来就行,一种比较流行的写法是这样 :
http://www.example.com/user/name/yourname/age/22

3、POST 方法比 GET 方法安全?
按照网上大部分文章的解释,POST 比 GET 安全,因为数据在地址栏上不可见。
然而从传输的角度来说,他们都是不安全的,因为 HTTP 在网络上是明文传输,只要在网络节点上抓包,就能完整地获取数据报文。
要想安全传输,就只有加密,也就是 HTTPS

  • 10
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: GET 和 POST 是 HTTP 请求方法,它们用于向 Web 服务器发送数据。GET 请求通过 URL 发送数据,而 POST 请求通过请求主体发送数据。GET 请求用于从服务器检索数据,而 POST 请求用于向服务器发送数据,以便执行某些操作,如表单提交。GET 请求通常用于幂等操作,如搜索,而 POST 请求通常用于非幂等操作,如创建、更新或删除数据。 ### 回答2: GET和POST是HTTP协议中常用的两种请求方法,它们在传输数据时有以下区别: 1. GET请求:GET请求用于从服务器获取数据,通过将数据附加在URL的查询字符串中发送给服务器。GET请求的特点是可以被缓存、书签化和历史记录保存,但由于数据是附加在URL中的,因此对于敏感数据来说安全性较低。GET请求的数据量通常有限制,因此适用于请求少量数据。 2. POST请求POST请求用于向服务器提交数据,通过将数据放在请求体中发送给服务器。POST请求的特点是安全性较高,因为数据不会显示在URL中,而是隐藏在请求体中传输,适用于传输敏感数据。POST请求没有数据量限制,适用于请求大量数据。POST请求不会被缓存、书签化和历史记录保存。 除了以上区别,GET和POST还有其他方面的差异: - GET请求会将请求参数放在URL中,而POST请求请求参数放在请求体中。 - GET请求的参数通过问号传参,POST请求的参数通过请求体传参。 - GET请求的数据在URL中可见,POST请求的数据在请求体中不可见。 - GET请求的数据可以通过浏览器的回退按钮重新提交,POST请求不会。 - GET请求适合获取数据,POST请求适合提交数据。 综上所述,GET和POST区别在于数据传输的方式和安全性,根据具体需求选择合适的请求方法可以提高系统性能和安全性。 ### 回答3: GET和POST是HTTP协议中最常见的两种请求方式。 GET请求用于从服务器获取资源。当浏览器发送GET请求时,请求参数会被附加在URL的末尾,因此GET请求的参数可见且有长度限制。GET请求是幂等的,即多次请求同一个URL返回的结果是一样的。由于GET请求参数附加在URL中,所以GET请求可以被缓存,也可以被用户书签保存下来。常见的使用场景是获取网页、图片等静态资源。 POST请求用于向服务器提交数据。当浏览器发送POST请求时,请求参数会被放置在HTTP请求的消息体中,而非URL中。由于POST请求的参数不会出现在URL中,所以POST请求的参数不可见,并且没有长度限制。POST请求是非幂等的,即多次请求同一个URL返回的结果可能不同。由于POST请求的参数没有附加在URL中,所以POST请求不能被缓存,也不能被用户书签保存。常见的使用场景是提交表单、上传文件等需要发送大量数据的操作。 总结来说,GET请求适用于获取资源,而POST请求适用于提交数据。GET请求的参数可见且有长度限制,可以被缓存和书签保存;POST请求的参数不可见且无长度限制,不能被缓存和书签保存。根据请求的不同特点,我们可以根据需要选择合适的请求方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值