关于Get和Post的区别,一直比较模糊,因为网上所说的也都是各有不同,甚至相悖,为此结合查询和一个简单的例子来说明一下。

网络答案

网上解释的区别为以下几点:

  • Post主要用于对服务器数据的修改,Get主要用于对服务器数据的查询。
  • GET使用URL或Cookie传参。而POST将数据放在BODY中。
  • GET的URL会有长度上的限制,则POST的数据则可以非常大。
  • POST比GET安全,因为数据在地址栏上不可见。发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
  • 二者对缓存默认设置不同。

实例

请求的页非常简单,只有name和password两个参数,结合Chrome的开发工具,我们来看一下基本的区别。

请求页页面

Get下

body

  <body><form id="test" name="test" method="get" action="servlet/SetCookieServlet" ><input id="name" type ="text" name="name" value="LD" /><input id="password"   type ="text" name="password" value="000"/><input id="tj" type="submit" value="提交" /></form></body>

截获的数据

Post下

body

  <body><form id="test" name="test" method="post" action="servlet/SetCookieServlet" ><input id="name" type ="text" name="name" value="LD" /><input id="password"   type ="text" name="password" value="000"/><input id="tj" type="submit" value="提交" /></form></body>

截获的数据

对比

通过对比,可以发现Get将输入域数据附加到URL传输,而Post放到了body中;Get数据以Parameters的方式获取,Post以Form Data的方式获取,包括对缓存的设置区别,包括Get方式有URL长度限制,使用非URL传输的Post数据封装的更安全,这是显而易见的区别。

但是我们需要确认,这是浏览器的规定,还是HTML的规定,还是真正的HTTP协议的规定。简单测试就可以发现:

  • 不同IE版本对URL长度规定的不同
  • 不用版本的IIS对Post传输的数据大小不同

很显然他们使用的都是HTTP1.1,但对数据限制却不同,是因为数据长度并非是HTTP协议规定,确切说这不属于Post和Get方法的区别,而是软件、系统和环境的设置的不同,这一点还是有必要区分一下。

总结

一般在应用情况下,我们知道这几个表现出来的区别就够,但是如果想深究区别和不同,还是很有必要仔细研究一下各个协议的说明文档。

更多博客,其访问《项目总结》。

浅析Post和Get相关推荐

  1. 浅析 JavaScript 中的 函数 uncurrying 反柯里化

    柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...

  2. 浅析Python中bytes和str区别

    本博转载自:Chown-Jane-Y的浅析Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示, ...

  3. 学习《Linux设备模型浅析之设备篇》笔记(深挖一)

    这篇文章既然说了是浅析,那就是跳过了一些东西,我们把这些跳过的东西给它尽可能的补回来 今天登陆 lxr.free-electrons.com 发现内核版本已经升级到3.15了,那以后都使用3.15的源 ...

  4. 学习《Linux设备模型浅析之设备篇》笔记(一)

    最近在学习Linux设备模型,前面几篇文章也是读这篇的时候遇到问题,然后为了搞清楚先转去摸索才写出来的. 当然了,刚开始是先读到<Linux那些事儿之我是Sysfs>,搞不清楚才去读的&l ...

  5. 架构周报| 浅析MySQL JDBC连接配置上的两个误区

    经典案例 \\ 浅析MySQL JDBC连接配置上的两个误区:相信使用MySQL的同学都配置过它的JDBC驱动,多数人会直接从哪里贴一段URL过来,然后稍作修改就上去了,对应的连接池配置也是一样的,很 ...

  6. 超级账本(Hyperledger Fabric)之权限管理浅析

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 超级账本(Hyperledger Fabric)之权限管理浅析 超级账本是联盟链的代表,而其相对于共链(例如比特币,以太 ...

  7. linux内核SMP负载均衡浅析

    需求       在<linux进程调度浅析>一文中提到,在SMP(对称多处理器)环境下,每个CPU对应一个run_queue(可执行队列).如果一个进程处于TASK_RUNNING状态( ...

  8. CAS、原子操作类的应用与浅析及Java8对其的优化

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:CoderBear juejin.im/post/5c7a8 ...

  9. Python标准库queue模块原理浅析

    Python标准库queue模块原理浅析 本文环境python3.5.2 queue模块的实现思路 作为一个线程安全的队列模块,该模块提供了线程安全的一个队列,该队列底层的实现基于Python线程th ...

  10. Python标准库threading模块Condition原理浅析

    Python标准库threading模块Condition原理浅析 本文环境python3.5.2 threading模块Condition的实现思路 在Python的多线程实现过程中,在Linux平 ...

最新文章

  1. FindAllAnagramsinaString
  2. 关于页面加载的方法收集
  3. hihocoder 1249(2015ACM/ICPC北京)
  4. JQuery-学习笔记01【基础——JQuery基础】
  5. AT2672 Coins
  6. Java版数据结构与算法——线性表
  7. ubuntu共享文件夹文件看不到_实验08:轻松搭建文件夹共享
  8. qt lighthouse相关
  9. MooTool 1.0.0 发布,开发者常备桌面小工具
  10. Friday the Thirteenth
  11. 浅析ERP软件企业资源的关系与发展
  12. centos7 安装pgadmin3
  13. 计算机光驱里有硬盘,笔记本电脑光驱位装机械硬盘有以下危害
  14. 前端程序员《HTML》学习笔记(3)之标签学习
  15. 基于简单MLP模型的加州房价预测
  16. 一些开源的项目 收藏
  17. HIVE常用参数配置
  18. Socket 对外接口 (一)
  19. 华师大 OJ 2822
  20. 电脑怎么下mcjava版_我的世界pc java下载

热门文章

  1. Android IPC 之 AIDL 原理
  2. linux修改二进制文件
  3. 利用Smith圆图设计匹配网络
  4. 毕业设计:基于JSP动漫论坛的设计与实现
  5. C Note(NO.7)
  6. Vtk三维可视化学习笔记-1
  7. Zoj 3598 Spherical Triangle 【计算几何】【曲面三角形】
  8. Socket编程概念和 Socket之异步TCP客户端断线重连
  9. 【InternImage】Exploring Large-Scale Vision Foundation Models with Deformable Convolutions
  10. 聊聊激光雷达原理之光学原理