HTTP 协议中GET和POST到底有哪些区别
HTTP 定义了与服务器交互的不同方法,最常用的有4种,Get、Post、Put、Delete,如果我换一下顺序就好记了,Put(增),Delete(删),Post(改),Get(查),即增删改查,下面简单叙述一下:
1)Get, 它用于获取信息,注意,他只是获取、查询数据,也就是说它不会修改服务器上的数据,从这点来讲,它是数据安全的,而稍后会提到的Post它是可以修改数据的,所以这也是两者差别之一了。
2) Post,它是可以向服务器发送修改请求,从而修改服务器的,比方说,我们要在论坛上回贴、在博客上评论,这就要用到Post了,当然它也是可以仅仅获取数据的。
3)Delete 删除数据。可以通过Get/Post来实现。用的不多,暂不多写,以后扩充。
4)Put,增加、放置数据,可以通过Get/Post来实现。用的不多,暂不多写,以后扩充。
下面简述一下Get和Post区别:
1) GET请求的数据是放在HTTP包头中的,也就是URL之后,通常是像下面这样定义格式的,(而Post是把提交的数据放在HTTP正文中的)。
login.action?name=hyddd&password=idontknow&verify=%E4%BD%E5%A5%BD
a,以 ? 来分隔URL和数据;
b,以& 来分隔参数;
c,如果数据是英文或数字,原样发送;
d,如果数据是中文或其它字符,则进行BASE64编码。
2)GET提交的数据比较少,最多1024B,因为GET数据是附在URL之后的,而URL则会受到不同环境的限制的,比如说IE对其限制为2K+35,而POST可以传送更多的数据(理论上是没有限制的,但一般也会受不同的环境,如浏览器、操作系统、服务器处理能力等限制,IIS4可支持80KB,IIS5可支持100KB)。
3)Post的安全性要比Get高,因为Get时,参数数据是明文传输的,而且使用GET的话,还可能造成Cross-site request forgery攻击。而POST数据则可以加密的,但GET的速度可能会快些。
所以综上几点,总结成下表:
|
操作方式 |
数据位置 |
明文密文 |
数据安全 |
长度限制 |
应用场景 |
|
GET |
HTTP包头 |
明文 |
不安全 |
长度较小 |
查询数据 |
|
POST |
HTTP正文 |
可明可密 |
安全 |
支持较大数据传输 |
修改数据 |
HTTP 协议中GET和POST到底有哪些区别的更多相关文章
- CXP 协议中upconnection 与downconnection的说明及其区别
概述 CXP定义了一个DEVICE和HOST之间点对点的连接协议.CXP的一个连接包含了一个MASTER物理连接和若干可选的SLAVE连接,每一个连接都定义了一组逻辑通道用于传输图像数据.实时触发.设 ...
- HTTP协议中PUT和POST使用上的区别
有的观点认为,应该用POST来创建一个资源,用PUT来更新一个资源:有的观点认为,应该用PUT来创建一个资源,用POST来更新一个资源:还有的观点认为可以用PUT和POST中任何一个来做创建或者更新一 ...
- java中|与||,&与&&到底有什么区别呢?
&是位运算符.&&是布尔逻辑运算符.在运行上,&两边的条件都要判断(不管前面的是ture还是false),而&&先判断前面的,若为false,则后面的不 ...
- CentOS中rpm和yum到底有什么区别?
2020/5/19 ( Linux 软件安装的学习链接:http://c.biancheng.net/view/814.html ) 一.rpm 是什么? rpm 全称 Red-Hat Pa ...
- Spring中BeanFactory与FactoryBean到底有什么区别?
一.BeanFactory BeanFactory是一个接口,它是Spring中工厂的顶层规范,是SpringIoc容器的核心接口,它定义了getBean().containsBean()等管理Bea ...
- http协议中到底都有什么内容?【持续更新】
http协议中到底都会传输我电脑上的啥东西呢?主机名,账号密码? 没有主机名,有你这台主机的操作系统...也就是说他们会知道你的操作系统.....
- HTTP协议中状态码的应用
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码. 所有状态码的第一个数字代表了响应的五种状态之一. Mark from 维基百科 消息 ...
- HTTP协议中的短轮询、长轮询、长连接和短连接
HTTP协议中的短轮询.长轮询.长连接和短连接 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接 ...
- python中TCP协议中的粘包问题
TCP协议中的粘包问题 1.粘包现象 基于TCP实现一个简易远程cmd功能 #服务端 import socket import subprocess sever = socket.socket() s ...
随机推荐
- CSS之立方体绘画步骤
附上总的代码: <!DOCTYPE html><html><head> <title>立方体</title> <meta charse ...
- silverlight导出excel
开发导出excel,首先需要添加项目引用. Microsoft.CSharp 这个是应用dynamic的前提. 在代码页,需要添加引用 using System.Runtime.InteropServ ...
- C# List<T>用法
C# List<T>用法 所属命名空间:using System.Collections.Generic; List<T>类是 ArrayList 类的泛型等效类. 该类使用 ...
- SQL查询语句执行速度快,存储过程执行慢
今天一个生成10w条数据的存储过程执行了95s,但是单独执行SQL语句只需要28s,查资料后发现原来这是存储过程的机制导致的,也就是传说中的参数嗅探 网上的一段话: (1)可能是发生了参数嗅探,第一次 ...
- Spring中的SPEL
src\dayday\Person.java package dayday;/** * Created by I am master on 2016/11/28. */public class Per ...
- 使用TypeScript开发
学习过一段时间CoffeeScript,然后再学习TypeScript,最后还是决定使用TypeScript开发. CofeeScript主要是给js添加一些语法糖,编写代码要快捷的多,少量的代码开发 ...
- 向通知栏发送通知点击跳转并传递数据(PendingIntent)传递数据
// 为发送通知的按钮的点击事件定义事件处理方法 public void send() {///// 第一步:获取NotificationManager NotificationManager nm ...
- 自定义Toast解决快速点击时重复弹出,排队无止尽
解决办法:自定义MyToast类: public class MyToast { /** 之前显示的内容 */ private static String oldMsg ; /** Toast对象 * ...
- C#在Dictionary中使用枚举作为键
Enum类型没有实现IEquatable接口,Dictionary中使用Enum作为键时,将发生装箱,使效率降低. 此时可用Dictionary中一个接收IEqualityComparer<T& ...
- 关于thinkphp中的G方法使用
最近在研究thinkphp框架发现其中有好多东西很值得借鉴今天看了一下函数G()很适合调试出页面执行的时间和使用的内存情况具体的代码如下 <?php /** * 记录和统计时间(微秒)和内存使用 ...