网站首页 > 技术文章 正文
http中 GET 和 POST到底有什么区别?
记得 Python大星早年面试的时候,会碰到面试官抛出这种问题。那么,为什么面试官会问这种看似很简单的问题呢?现在不知道还有没有面试官问这种问题,如果碰到了,评论下欢迎你的留言。
先讲一个故事:
这是发生在前后端联调的真实故事(情节“美化”,自行脑补)。
前端索隆:喂,你这接口返回没数据?坑货。。。
后端山治:绿藻头,我这 postman 返回数据没问题,你用你眼珠子看下截图。
前端索隆:臭厨师,你看我这截图?请求参数和你这一样,就是没有数据。
后端山治:这个接口需要登录才能调用,你 header 里传 token 了没有?
前端索隆:文档也不写清楚,谁知道啊!!!
... 5 分钟过去了
前端索隆:我去,你这白痴卷眉,获取分页 list ,你用啥 POST 干毛线!GET 请求啊!
后端山治:你个路痴,GET 调不通,你不会改用 POST 啊,你用 POST 会死啊!
...
聊聊 http 中 GET 和 POST 到底有什么区别?
先谈下两者的共同点,GET、POST请求都是 http 请求方式,用户通过不同的 http 的请求方式完成对资源(url)的操作。
GET、POST、PUT 和 DELETE 就对应着对这个资源的查,改,增,删 4个操作。具体来说,GET 一般用于获取/查询资源信息,而 POST 一般用于更新资源信息。
① GET 请求提交的数据会在地址栏显示出来,而 POST 请求不会在地址栏显示出来。
GET 提交:
请求的数据会附在 url 之后(就是把数据放在 HTTP 协议头中),以 ?分割 url 和 传输数据,多个参数用 & 连接;
POST 提交:
把提交的数据放置在是 HTTP 包的包体中。
因此,GET 提交的数据会在地址栏中显示出来,而 POST 提交,地址栏不会改变。
② 传输数据
GET 请求:
浏览器对于地址长度的限制会导致传输的数据有限制,只允许 ASCII 字符,如果请求参数不是 ASCII 字符,会先转化。
POST 请求:
请求不会因为地址长度限制而导致传输数据限制。限制它的是服务器的处理能力、存储大小和 Web 容器的限制,比 如 Tomcat 默认是 2 MB。没有限制。也允许二进制数据。
③ 安全性
POST 的安全性要比 GET 的安全性高。
GET 请求返回的内容可以被浏览器缓存起来。而每次提交的 POST,浏览器不会缓存 POST 请求返回的内容。
比如说 GET http://localhost/api.do
当你再次发送该请求的时候,浏览器并不真的再发送这条请求,而是从历史记录里把这个数据读取取出来,这叫做缓存。这是浏览器自己的决策,后端并不知道也没有收到任何请求。
防止缓存,我们可以看到一些前端人员通常在请求时要加一个时间戳
GET http://localhost/api.do?_t=时间戳
添加一个后端直接忽略的参数,然后每次都不一样,这样浏览器就认为每次都是不同的请求,就不会从历史记录里读取数据了。
Python 中如何使用 requests 发起 GET 和 POST 请求?
可以看 Python 大星历史文章
>>>趣说Python爬虫02--requests库基本使用
关于“http中 GET 和 POST到底有什么区别?”
如果你还有其他观点,欢迎评论下留言分享。@Python大星
猜你喜欢
- 2024-11-06 JavaScript学习笔记(二十五)——HTTP
- 2024-11-06 原生js实现文件下载并设置请求头header
- 2024-11-06 干货-Http请求get、post工具类(get和post请求的区别是什么)
- 2024-11-06 聊聊在springcloud gateway如何获取请求体
- 2024-11-06 python接口自动化-发送get请求(python get请求 url传参)
- 2024-11-06 想测试HTTP响应不知道如何开展怎么办?
- 2024-11-06 接口测试遇到500报错?别慌,你的头部可能有点问题
- 2024-11-06 一文讲清HPP的请求方法和过程(hp partsufer)
- 2024-11-06 HTTP请求对象(获取用户请求信息)(如何查看http请求的头部信息)
- 2024-11-06 学习笔记-HTTP 请求方法详解(学习笔记-HTTP 请求方法详解pdf)
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)