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的区别相关推荐

  1. python中break和continue的区别

    python中break和continue的区别 break 结束for 或者while 循环  后面还没循环到的 不再循环 continue 当满足某种条件时结束当前值的循环 后面没有循环的继续循环 ...

  2. java中separator_java - File.separator和路径中的斜杠之间的区别

    java - File.separator和路径中的斜杠之间的区别 在Java Path-String中使用/和普通的File.separator有什么区别? 与双反斜杠相比,/平台独立似乎不是原因, ...

  3. PHP中self和static的区别,php中self与static的区别

    原文链接,猛击这里. php中self与static的区别 通过一些示例,我们可以很容易看出self和static的区别.假定我们有class Car – 它有两个方法,model和getModel. ...

  4. php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析

    本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...

  5. php $this self,php中self与$this的区别

    学习php中self与$this的区别. 先来看下parent与self的例子: /* * parent与self的区别 * by www.jbxue.com */ class A{ function ...

  6. mysql中char与varchar的区别分析(补充一句,int和integer没区别)

    转自:http://www.jb51.net/article/23575.htm 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...

  7. python中bytearray和java中byte[]的区别_Python经典面试题:说说Python中xrange和range的区别?...

    昨晚一小伙后台问xrange和range有啥区别,讲了下他倒领悟的挺快,其实这也是你各面试Python岗位,经常会遇到的Python面试题,长个心眼哈,说不定明年3月你找工作就用上了. 废话不多说,开 ...

  8. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  9. SQL中where与having的区别

    SQL中where与having的区别 目录 SQL中where与having的区别 创建表 插入数据 进行聚合操作 # WHERE是在聚合之前进行数据行的过滤而HAVING实在聚合之后进行新数据的过 ...

  10. mysql''和null,mysql中NULL和null的区别

    接触php的web开发一段时间了,在进行数据库操作的时候经常会遇到一个问题,使得同一字段在页面显示时有3种类型NULL,null以及数字,当时的解决办法是将这一字段定义为varchar类型,在插入数据 ...

最新文章

  1. 《智源社区周刊:预训练模型》第2期:Facebook用“预微调”改进预训练性能、再议GPT-3中的东方主义偏见...
  2. 他是阿里 P11,靠写代码写成合伙人,身家几十亿,没有他,我们可能刷不了淘宝!...
  3. ArrayList add(int index,E element)
  4. 多线程并发之原子性(六)
  5. 利用Excel VBA批量计算气象数据多个台站多年来春季和冬季降水量和平均气温
  6. 一本通1596动物园
  7. java 抽象类和接口2--什么时候用接口什么时候用抽象类
  8. 大道至简第四章读后感
  9. 还在用 AI 和机器学习?简单的 SQL 脚本就能替代!
  10. mongodb 导出一条数据_将 MongoDB 导出成 csv
  11. k8s(Kubernetes) 上部署 Redis 集群(3主3从)
  12. python规模_基于python的百度迁徙2——迁徙规模指数(附代码)
  13. 卡巴斯基发现医疗IT系统存安全漏洞
  14. java怎么分解质因数,java分解质因数的方法
  15. html引用less文件报错,vue-cli import less文件报错
  16. OpenFOAM中重力的植入方式
  17. 十五、JDBC(高琪java300集+java从入门到精通笔记)
  18. 第二章:EB编译环境Keil的配置(s32k144)
  19. 点击获取验证码并登录的实现和验证原理
  20. PHY芯片88E1512之FPGA

热门文章

  1. ADAMS 脚本仿真
  2. 一阶线性微分方程的初等积分法
  3. Linux 如何对http服务器进行压力测试
  4. 单例模式(java代码实现)
  5. textcnn模型实践
  6. 微信小程序上传图片到云储存
  7. 自学QT之qss教程
  8. 制作字幕html怎么使用教程,anSuber字幕编辑软件使用详解
  9. 直播线上实时翻译和流式字幕技术实践与应用
  10. html转word 文档 doc docx