http中get和post的区别
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 |
http中get和post的区别相关推荐
- python中break和continue的区别
python中break和continue的区别 break 结束for 或者while 循环 后面还没循环到的 不再循环 continue 当满足某种条件时结束当前值的循环 后面没有循环的继续循环 ...
- java中separator_java - File.separator和路径中的斜杠之间的区别
java - File.separator和路径中的斜杠之间的区别 在Java Path-String中使用/和普通的File.separator有什么区别? 与双反斜杠相比,/平台独立似乎不是原因, ...
- PHP中self和static的区别,php中self与static的区别
原文链接,猛击这里. php中self与static的区别 通过一些示例,我们可以很容易看出self和static的区别.假定我们有class Car – 它有两个方法,model和getModel. ...
- php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析
本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...
- php $this self,php中self与$this的区别
学习php中self与$this的区别. 先来看下parent与self的例子: /* * parent与self的区别 * by www.jbxue.com */ class A{ function ...
- mysql中char与varchar的区别分析(补充一句,int和integer没区别)
转自:http://www.jb51.net/article/23575.htm 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...
- python中bytearray和java中byte[]的区别_Python经典面试题:说说Python中xrange和range的区别?...
昨晚一小伙后台问xrange和range有啥区别,讲了下他倒领悟的挺快,其实这也是你各面试Python岗位,经常会遇到的Python面试题,长个心眼哈,说不定明年3月你找工作就用上了. 废话不多说,开 ...
- python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法
python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录
- SQL中where与having的区别
SQL中where与having的区别 目录 SQL中where与having的区别 创建表 插入数据 进行聚合操作 # WHERE是在聚合之前进行数据行的过滤而HAVING实在聚合之后进行新数据的过 ...
- mysql''和null,mysql中NULL和null的区别
接触php的web开发一段时间了,在进行数据库操作的时候经常会遇到一个问题,使得同一字段在页面显示时有3种类型NULL,null以及数字,当时的解决办法是将这一字段定义为varchar类型,在插入数据 ...
最新文章
- 《智源社区周刊:预训练模型》第2期:Facebook用“预微调”改进预训练性能、再议GPT-3中的东方主义偏见...
- 他是阿里 P11,靠写代码写成合伙人,身家几十亿,没有他,我们可能刷不了淘宝!...
- ArrayList add(int index,E element)
- 多线程并发之原子性(六)
- 利用Excel VBA批量计算气象数据多个台站多年来春季和冬季降水量和平均气温
- 一本通1596动物园
- java 抽象类和接口2--什么时候用接口什么时候用抽象类
- 大道至简第四章读后感
- 还在用 AI 和机器学习?简单的 SQL 脚本就能替代!
- mongodb 导出一条数据_将 MongoDB 导出成 csv
- k8s(Kubernetes) 上部署 Redis 集群(3主3从)
- python规模_基于python的百度迁徙2——迁徙规模指数(附代码)
- 卡巴斯基发现医疗IT系统存安全漏洞
- java怎么分解质因数,java分解质因数的方法
- html引用less文件报错,vue-cli import less文件报错
- OpenFOAM中重力的植入方式
- 十五、JDBC(高琪java300集+java从入门到精通笔记)
- 第二章:EB编译环境Keil的配置(s32k144)
- 点击获取验证码并登录的实现和验证原理
- PHY芯片88E1512之FPGA