http中get和post的区别

导语

get和post的区别是面试中经常会被问到的问题。

那么同样作为http请求,他们之间究竟有什么异同呢?

相同点

从本质上讲,get和post都是http请求,都是tcp连接,是无区别的。

不同点

关于参数

考虑参数的位置:get请求的参数位于url中,而post请求的参数位于request body中。
这导致了三个问题,
一是get请求的安全性不如post请求;
二是get的参数有长度限制,而post没有;
三是get的参数只允许ASCII字符,post没有限制。

关于回退

点击回退或刷新时,post请求会再次提交表单,而get请求不会。
所以post是回退有害的,get回退无害。

关于缓存

get能被缓存,可以收藏为书签,参数保留在浏览器历史中;
post不能被缓存,不可收藏为书签,参数不会保留在浏览器历史中。

关于请求包

get请求只发送一个tcp数据包,即http header和data共同发送给web服务器,服务器响应200 OK.
post请求发送两个tcp数据包,第一次发送http header,如果web服务器予以响应100 continue,则发送第二个数据包data,服务器响应200 OK.

对比总结

get post
参数位置 url中 request body
参数长度 有限制 无限制
参数编码 ASCII编码 无限制
后退/刷新 不重复提交,回退无害 重复提交,回退有害
安全性 参数暴露,不安全 安全
缓存 可以缓存 不可以缓存
书签 可以收藏为书签 不可收藏为书签
历史 参数保留在浏览器历史 不保留在浏览器历史
请求包个数 1个 http header+data 两个 先http header,再data
发布了66 篇原创文章 · 获赞 26 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览