GET与POST的区别

简介: GET与POST的区别

1. 常见回答

当你被问到GET请求与POST请求有什么区别的时候,是不是会把下面这张表给背出来呢?

但是,如果你只能背出来这张表,那就有点不够深入啦~ 我们来一起看看GET请求与POST请求的本质区别吧。

2. 本质区别

先说结论,本质上,GET和POST没有区别,都是HTTP协议中的两种发送请求的方法。


因为GET和POST只是HTTP协议中的两种请求方式,而HTTP协议是基于TCP/IP的应用层协议,所以无论GET还是POST,用的都是同一个传输层协议,所以在传输上是没有区别的。


而在报文格式上,不带任何参数时最大的区别就是第一行的方法名不同:


GET方法请求报文第一行如下:GET + URL + HTTP/1.1

POST方法请求报文第一行如下:POST+ URL + HTTP/1.1

GET和POST能做的事情是一模一样的,GET可以加request body,POST也可以使用url参数,但是不建议这么做。


举个例子,就比如TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。为了避免这种情况发生,交通规则HTTP诞生了。HTTP给汽车运输设定了好几个服务类别,包括GET、POST、PUT等等,HTTP规定,当执行GET请求的时候,要设置method为GET,而且要求把传送的数据放在url中以方便记录。如果是POST请求,就要设置method为POST,并把传送的数据放在request body中。

3. 关于数据长度的限制

其实在Web中数据长度的限制与浏览器Client端和服务器Server端有关。


虽然理论上我们可以在url中无限加参数,但是数据量太大对浏览器和服务器都是很大负担,因此业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。


如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你读出数据,有些服务器直接忽略。所以,虽然GET可以带request body,却不能保证一定能被接收到。


4. 关于安全性问题

如果是依据数据在地址栏上是否可见来说的话,POST是比GET安全的。然而,从传输的角度来说,他们都是不安全的,因为HTTP在网络上是明文传输的,只要在网络节点上进行抓包就能完整地获取数据报文,所以要想安全传输就只有加密,也就是使用HTTPS。

目录
相关文章
|
存储 前端开发 安全
GET 和 POST 请求:理解它们之间的区别和适用场景
GET 和 POST 请求:理解它们之间的区别和适用场景
|
5月前
|
前端开发 API 语音技术
从零搭建一个免费的文本转语音在线工具(基于 Python3 + Edge TTS)
最近有个需求,需要把一段文字转换成语音,找了几个在线工具,要么收费,要么有水印,要么音质惨不忍睹。后来发现微软 Edge 浏览器的 TTS(Text-to-Speech)服务音质非常好,而且免费开放使用。于是动手写了一个在线工具,分享给大家。
1211 2
|
12月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
911 2
|
Prometheus 监控 Cloud Native
高频面题: 你们线上 QPS 多少?你 怎么知道的?
本文由45岁资深架构师尼恩撰写,针对高级开发和架构师面试中的高频问题提供详细解答。文章涵盖了QPS、TPS、RT等性能指标的定义及计算方法,详解了如何配置Prometheus与Grafana监控系统QPS,并提供了应对高并发场景(如双十一抢购)的系统部署策略。此外,还分享了多个大厂面试真题及解决方案,帮助读者在面试中充分展示技术实力,提升求职竞争力。建议收藏并深入学习,为面试做好充分准备。更多内容可参考《尼恩Java面试宝典》及相关技术圣经系列PDF。
|
安全 网络协议 算法
电脑病毒木马的清除和防范方法
电脑病毒木马的清除和防范方法
3798 0
电脑病毒木马的清除和防范方法
|
PyTorch TensorFlow API
大模型中 .safetensors 文件、.ckpt文件、.gguf和.pth以及.bin文件区别、加载和保存以及转换方式
本文讨论了大模型中不同文件格式如`.safetensors`、`.ckpt`、`.gguf`、`.pth`和`.bin`的区别、用途以及如何在TensorFlow、PyTorch和ONNX等框架之间进行加载、保存和转换。
7037 2
|
缓存 安全 数据安全/隐私保护
GET和POST有什么区别
GET和POST有什么区别
|
存储 缓存 JSON
详解HTTP四种请求:POST、GET、DELETE、PUT
【4月更文挑战第3天】
77315 5
详解HTTP四种请求:POST、GET、DELETE、PUT
|
安全 前端开发 JavaScript
什么是跨域?为什么会产生跨域?怎么解决跨域?
什么是跨域?为什么会产生跨域?怎么解决跨域?
3592 0
|
前端开发 Java Spring
@RequestMapping, @GetMapping, 和 @PostMapping区别
@RequestMapping, @GetMapping, 和 @PostMapping区别