HTTP中GET和POST的区别
来源:互联网 发布:国家创新训练项目 知乎 编辑:程序博客网 时间:2024/05/16 03:47
浏览器与服务器的交互是通过http协议执行的(请求-应答协议),而get和post是http协议请求的两个方法。
咱先来看get和post的设计意图是什么。根据http的设计,大家在看到get的时候,都期望这个请求只获取数据,对服务器没有修改;看到post的时候,都认为这对服务器产生了修改。但是在实际开发中运用中,get请求也能修改数据,post请求也能获取数据,但这样在语义上混乱了,不推荐这么做。。
传递数据方式
如果你是遵从HTML标准对HTTP协议的用法的约定,GET请求的数据(参数)要放在URL中,POST请求放在(body)请求体中。但HTTP协议可没有规定你是怎么的传递方式,这可不是GET和POST的区别。
安全性
首先,咱们从服务器角度讲,get不修改数据是安全的,post修改了数据不安全。
从传送数据角度讲,get和post请求都是明文传送,get是通过URL方式请求,可以在浏览器的地址栏直接看到传递的参数,并且参数会被保存在浏览器历史或 web 服务器日志中,敏感的信息不能通过get请求传递,所以不安全;post则不会,是安全的。
当然,在传输过程中,你要是被抓包了,同样完蛋。
长度的限制
HTTP协议对GET和POST还有URL都没有对长度的限制,而对URL长度上的限制是浏览器跟服务器造成的。
URL太长对服务器也是一种负担,原本一个会话就没有多少数据,现在如果有人恶意地构造几个几M大小的URL,并不停地访问你的服务器。服务器的最大并发数显然会下降。另一种攻击方式是,把告诉服务器Content-Length是一个很大的数,然后只给服务器发一点儿数据,嘿嘿,服务器你就傻等着去吧。哪怕你有超时设置,这种故意的次次访问超时也能让服务器吃不了兜着走。有鉴于此,多数服务器出于安全啦、稳定啦方面的考虑,会给URL长度加限制。
从而你可以认为get请求是有长度限制的。
缓存
缓存技术目的是用来提高系统的性能,减少服务器的负载。而通常只适用于idempotent request(可以理解为查询请求,也就是不更新服务端数据的请求)也就是针对GET请求,W3School就总结get请求可以缓存,post请求不能缓存,
**但是**REF中POST也是可以被缓存的,虽然有这标准,但浏览器的实现也是很强大的。
幂等
幂等就是对同一个URL的多次请求,得到的结果是相同的,引入幂等主要是为了处理同一个请求重复发送的情况,get是幂等,post非幂等。
参考:http://www.nowamagic.net/librarys/veda/detail/1919
https://segmentfault.com/a/1190000004014583
http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html
http://www.w3school.com.cn/tags/html_ref_httpmethods.asp
- http中get和post的区别
- http中get和post的区别
- HTTP中POST和GET的区别
- HTTP中GET和POST的区别
- HTTP中GET和POST的区别
- http中get 和 post的区别
- HTTP 中get 和post的区别
- Http中get和post的区别
- Http中Get和Post的区别
- HTTP中Get和Post的区别
- http中get和post的区别
- http中get和post的区别
- HTTP中POST和GET的区别
- HTTP中Get和Post的区别
- HTTP中GET和POST的区别
- HTTP中GET和POST的区别
- HTTP中get和post的区别
- Http中get和post的区别
- 前端ThinkJS框架解析
- 美团2016研发工程师笔试题_球色问题
- 欠拟合、过拟合及其解决方法
- iOS 技术点总结笔记
- Elasticsearch 用户启动问题
- HTTP中GET和POST的区别
- xlistview
- java 中 String 与 int 的相互转换
- Spark Q&A : Spark利用databricks读取CSV文件报错 CSVFormat NoClassDefFoundError
- ajax
- openwrt移植过程的问题记录
- 数据降维笔记——非负矩阵分解(NMF),人脸数据特征提取
- Ubuntu修改环境变量关掉终端就没了,问题解决办法
- 9月20日云栖精选夜读:异构计算&高性能计算分论坛——揭秘拿什么实现超算平民化、国际化?