关于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):从服务器删除资源