浅析Post和Get
关于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相关推荐
- 浅析 JavaScript 中的 函数 uncurrying 反柯里化
柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...
- 浅析Python中bytes和str区别
本博转载自:Chown-Jane-Y的浅析Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示, ...
- 学习《Linux设备模型浅析之设备篇》笔记(深挖一)
这篇文章既然说了是浅析,那就是跳过了一些东西,我们把这些跳过的东西给它尽可能的补回来 今天登陆 lxr.free-electrons.com 发现内核版本已经升级到3.15了,那以后都使用3.15的源 ...
- 学习《Linux设备模型浅析之设备篇》笔记(一)
最近在学习Linux设备模型,前面几篇文章也是读这篇的时候遇到问题,然后为了搞清楚先转去摸索才写出来的. 当然了,刚开始是先读到<Linux那些事儿之我是Sysfs>,搞不清楚才去读的&l ...
- 架构周报| 浅析MySQL JDBC连接配置上的两个误区
经典案例 \\ 浅析MySQL JDBC连接配置上的两个误区:相信使用MySQL的同学都配置过它的JDBC驱动,多数人会直接从哪里贴一段URL过来,然后稍作修改就上去了,对应的连接池配置也是一样的,很 ...
- 超级账本(Hyperledger Fabric)之权限管理浅析
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 超级账本(Hyperledger Fabric)之权限管理浅析 超级账本是联盟链的代表,而其相对于共链(例如比特币,以太 ...
- linux内核SMP负载均衡浅析
需求 在<linux进程调度浅析>一文中提到,在SMP(对称多处理器)环境下,每个CPU对应一个run_queue(可执行队列).如果一个进程处于TASK_RUNNING状态( ...
- CAS、原子操作类的应用与浅析及Java8对其的优化
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:CoderBear juejin.im/post/5c7a8 ...
- Python标准库queue模块原理浅析
Python标准库queue模块原理浅析 本文环境python3.5.2 queue模块的实现思路 作为一个线程安全的队列模块,该模块提供了线程安全的一个队列,该队列底层的实现基于Python线程th ...
- Python标准库threading模块Condition原理浅析
Python标准库threading模块Condition原理浅析 本文环境python3.5.2 threading模块Condition的实现思路 在Python的多线程实现过程中,在Linux平 ...
最新文章
- FindAllAnagramsinaString
- 关于页面加载的方法收集
- hihocoder 1249(2015ACM/ICPC北京)
- JQuery-学习笔记01【基础——JQuery基础】
- AT2672 Coins
- Java版数据结构与算法——线性表
- ubuntu共享文件夹文件看不到_实验08:轻松搭建文件夹共享
- qt lighthouse相关
- MooTool 1.0.0 发布,开发者常备桌面小工具
- Friday the Thirteenth
- 浅析ERP软件企业资源的关系与发展
- centos7 安装pgadmin3
- 计算机光驱里有硬盘,笔记本电脑光驱位装机械硬盘有以下危害
- 前端程序员《HTML》学习笔记(3)之标签学习
- 基于简单MLP模型的加州房价预测
- 一些开源的项目 收藏
- HIVE常用参数配置
- Socket 对外接口 (一)
- 华师大 OJ 2822
- 电脑怎么下mcjava版_我的世界pc java下载