GET和POST区别(转)
链接:https://www.zhihu.com/question/28586791/answer/153556269
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
GET和POST长度的限制问题
GET
1.GET是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系。
2.实际上HTTP协议对URL长度是没有限制的;限制URL长度大多数是浏览器或者服务器的配置参数
POST
1.同样的,HTTP协议没有对POST进行任何限制,一般是受服务器配置限制或者内存大小。
2.PHP下可以修改php.conf的postmaxsize来设置POST的大小。
请求header的content-length问题
如果有人恶意伪造content-length很大的包头,但实际上发送content-length很小的请求,这样服务器会一直干等,直到超时。当然服务器是可以通过设置来避免该问题的
GET和POST的安全性
1.GET是通过URL方式请求,可以直接看到,明文传输。
2.POST是通过请求header请求,可以开发者工具或者抓包可以看到,同样也是明文的。 3.GET请求会保存在浏览器历史纪录中,还可能会保存在Web的日志中。
GET和POST对服务器的状态
根据http的设计,大家在看到get的时候,都期望这个请求对服务器没有修改,看到post的时候,都认为这对服务器产生了修改。
GET幂等,POST不幂等
幂等是指同一个请求方法执行多次和仅执行一次的效果完全相同。
1.按照RFC规范,PUT,DELETE和安全方法都是幂等的。虽说是规范,但服务端实现是否幂等是无法确保的。
2.引入幂等主要是为了处理同一个请求重复发送的情况,比如在请求响应前失去连接,如果方法是幂等的,就可以放心地重发一次请求。这也是浏览器在后退/刷新时遇到POST会给用户提示的原因:POST语义不是幂等的,重复请求可能会带来意想不到的后果。
3.比如在微博这个场景里,GET的语义会被用在「看看我的Timeline上最新的20条微博」这样的场景,而POST的语义会被用在「发微博、评论、点赞」这样的场景中。
最新文章
- IOS 消息机制(NSNotificationCenter)
- C#函数式编程之部分应用
- web storage: sessionStorage 和 localStorage
- 现在觉得IT还挺有意思
- mysql函数计算地表两点间距离
- iOS 非ARC基本内存管理系列 3-循环retain和@class
- notepad++中的python缩进问题
- windows根据端口号杀进程
- C# Lambda 表达式学习之(四):动态构建类似于 c =>; c.Age == 2 || c.Age == 5 || c =>; c.Age == 17 等等一个或多个 OrElse 的表达式
- JavaWeb - 目录
- 20165215 2017-2018-2《Java程序设计》课程总结
- 健壮程序之--SQL优化
- 【Python】keras使用LSTM拟合曲线
- vue与自定义元素的关系
- BZOJ3533:[SDOI2014]向量集(线段树,三分,凸包)
- Linux watchdog 关闭退出功能
- java并发编程 Executor,Executors,ExecutorService,CompletionService,Future,C
- SEO之基于thinkphp的URL伪静态
- scss使用指南--每天一点
- Model/ModelMap 和 ModelAndView 的区别使用
热门文章
- cuda编程知识普及
- Warning: Static member accessed via instance reference
- Java内存区域与内存溢出异常---对象的内存布局和对象的访问定位
- thinkphp 3.0 核心函数U的一个致命bug
- [Leetcode]016. 3Sum Closest
- C#获取单元格值(使用NPOI插件)
- nginx配置文件企业优化
- SpringMVC DeferedResult和servlet3.1 AsyncContext异步请求
- spring aop实现log 日志跟踪
- hadoop - hbase 单机版的安装部署