关于Http中的get请求和post请求的区别,网络上口径不一
有的人认为他们是有本质区别的
有的人又认为他们是没有本质区别
我想大概是因为站在的角度不一样,所以考虑的问题也不一样
网络上认为二者有区别,那么区别又是怎样的呢?具体入下图所示:
| Get | Post | |
|---|---|---|
| 后退/刷新 | 无害 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交) |
| 收藏为书签 | 可以 | 不可以 |
| 能否被缓存 | 可以 | 不可以 |
| 编码类型 | application/x-www-form-urlencoded |
①application/x-www-form-urlencoded ②multipart/form-data |
| 历史记录 | 参数可以保存在浏览的历史中 | 参数不会保存在浏览器的历史中 |
| 数据长度限制 |
url的长度最大为2048个字符 (get请求利用url上拼接数据的形式) |
不受限制 (post请求利用请求体中添加数据的形式) |
| 数据类型限制 | 只允许ASCII字符 | 没有限制 |
| 安全性 |
安全性差 | 相比而言较安全 |
| 可见性 | 数据在url中对所有人可见 | 数据不会显示在url中,也不会保存在浏览器历史中 |
使得大家都认为二者有上面区别的根本原因在于RFC这个东西
那么什么是RFC呢?上图

官方语言扯了一大堆,读了之后还是懵懂!
其实就是某团体开发出了一套标准或提出对某种标准的设想,想要征询外界的意见时,就会在Internet上发放一份RFC.
而对此感兴趣的人可以阅读该RFC并提出自己的意见.
所以说RFC就是现行的Internet的规范标准
按照正常逻辑上来讲,get请求可以包含请求体,pos请求也可以在url中拼接数据参数
但是RFC规范中不允许这样做,但不代表一定不能这样做.
RFC中有如下这样一段话

实际开发中又没有完全的不允许使用GET区完成增删改操作
另外
RESTful架构风格中有一个特点是"同一接口",其中做了如下规定:
- GET(SELECT):从服务器取出资源
- POST(CREATE):在服务器新建一个资源
- PUT(UPDATE):在服务器更新资源。
- PATCH(UPDATE):在服务器更新资源
- DELETE(DELETE):从服务器删除资源
本文详细探讨了HTTP请求中GET与POST的区别,包括安全性、数据长度及类型限制等,并介绍了RESTful架构风格中的相关规定。

被折叠的 条评论
为什么被折叠?



