http请求post与get的真正区别

好的帖子的汇总,非原创:
GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
GET书签可收藏,POST为书签不可收藏。
GET能被缓存,POST不能缓存
GET编码类型application/x-www-form-url,POST编码类型encodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
GET历史参数保留在浏览器历史中。POST参数不会保存在浏览器历史中。
GET对数据长度有限制,当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。POST无限制。
GET只允许 ASCII 字符。POST没有限制。也允许二进制数据。
与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET !POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
GET的数据在 URL 中对所有人都是可见的。POST的数据不会显示在 URL 中。


1. 从设计初衷上来说, GET 用来实现从服务端取数据,POST 用来实现向服务端提出请求对数据做某些修改,也因此如果你向nginx用post请求静态文件,nginx会直接返回 405 not allowed,但是服务端毕竟是人实现的,你可以让 POST 做 GET 相同的事情
2. 另外,HTTP/0.9 没有 POST 只有 GET
3. 从安全的角度讲,确实是有意义的,POST 请求需要加 body,而 GET 请求直接拼链接就可以,成本是不同的



GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。 GET和POST还有一个重大区别,简单的说: GET产生一个TCP数据包;POST产生两个TCP数据包。
对于 GET方式的请求,浏览器会把 http header和data一并发送出去,服务器响应200(返回数据)
而对于 POST浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。



猜你喜欢

转载自blog.csdn.net/u010486679/article/details/79010152