大家在初学 HTTP 协议的时候,可能从来没有想到面试的时候每次都会被问到 GET 和 POST 请求的区别吧。今天我们就来寻找一下标准答案。
简单回忆一下 HTTP
MDN 上对 HTTP 的描述是这样的:
超文本传输协议是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于 Web 浏览器和 Web 服务器之间的通信,但它也可以用于其他目的。`
其中 HTTP 定义了一组请求方法,以表明要对给定资源执行的操作。这些方法是一组有语义的动词或名字,主要有 GET/HEAD/POST/PUT/DELETE/CONECT/OPTIONS/TRACE/PATCH
,我们最常用的是 GET 和 POST,MDN 上对 GET 和 POST 用途的描述分别为:
- GET方法请求一个指定资源的表示形式. 使用GET的请求应该只被用于获取数据.
- POST方法用于将实体提交到指定的资源,通常导致状态或服务器上的副作用的更改.
有了这些基础就对后面的比较有帮助了。
标准回答
HTTP 方法:GET 对比 POST - w3school 给出来的分析算是比较浅显和直观的了,总结一下就是:
- GET在浏览器回退时是无害的,而POST会再次提交请求。
- GET产生的URL地址可以被加入到书签,而POST不可以。
- GET请求会被浏览器主动cache