http中get,post,put,delete方法的用法以及区别
http协议是一种在网络中进行文件传送遵循的协议。一种无状态的协议、http协议服务器端不跟浏览器端建立长久的通信连接. 建立http通信之后,服务端将文件内容传送给浏览器端接收就完成一次请求。当然一个页面,往往由多个http请求构成、图片,CSS等资源的请求~可能是一个页面进行多个http请求之后得到的结果。
GET: 发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现据(如HTML文本,或者图片或者视频等)返回给客户端.
POST: 向服务器提交数据.
最直观的区别:
1).GET把参数包含在URL中,POST通过request body传递参数;
2).GET在浏览器回退时是无害的,而POST会再次提交请求;
3).GET产生的URL地址可以被Bookmark,而POST不可以;
4).GET请求会被浏览器主动cache,而POST不会,除非手动设置;
5). GET请求只能进行url编码,而POST支持多种编码方式;
6).GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留;
7).GET请求在URL中传送的参数是有长度限制的,而POST没有限制;
8). 对参数的数据类型,GET只接受ASCII字符,而POST没有限制;
9).GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息;
本质区别:
首先GET和POST请求都是HTTP协议中的两种发送请求的方法,而HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议,HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。
1).虽然理论上GET和POST请求在使用上可以没有区别,但是不同的浏览器(发起http请求)和服务器(接受http请求)会限制单次传送数据了来控制风险,数据量太大对浏览器和服务器都是很大负担。业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到.
2).GET产生一个TCP数据包;POST产生两个TCP数据包;对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。
GET和POST使用时注意:
1). GET与POST都有自己的语义,不能随便混用。
2). 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
3). 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
http中get,post,put,delete方法的用法以及区别的更多相关文章
- List的add方法与addAll方法的区别、StringBuffer的delete方法与deleteCharAt的区别
List的add方法与addAll方法 区别 add add是将传入的参数作为当前List中的一个Item存储,即使你传入一个List也只会另当前的List增加1个元素 addAll addAll是传 ...
- oracle中的round()方法的用法
[oracle中的round()方法的用法] Round( ) 函数 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果 oracle一般常用于计算表空间内存还有多少空间 语法 ROUN ...
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
浅谈JS中的!=.== .!==.===的用法和区别 var num = 1; var str = '1'; var test = 1; test == num //tr ...
- ASP.NET MVC 学习8、Controller中的Detail和Delete方法
参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and ...
- 【转】Java中super和this的几种用法与区别
1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位. class Base { Base() { System.out.println("Base&qu ...
- js中innerHTML、outerHTML与innerText的用法与区别
____________________________________________________________________________________________________ ...
- mysql 用drop和delete方法删除用户的区别
在学习drop方法删除用户时,按照书上讲的一直没操作成功,后来到网上查了点其他资料,才弄明白drop的方法,贴出来和大家分享一下. (方法一)drop user 用户名; 语法:drop user 用 ...
- (转载)mysql 用drop和delete方法删除用户的区别
(转载)http://hi.baidu.com/yymagento/item/56c3f6184bce8347e75e06db 在学习drop方法删除用户时,按照书上讲的一直没操作成功,后来到网上查了 ...
- [置顶] perl脚本中defined,exists和delete关键字的用法和区别
刚学习perl脚本的时候,喜欢频繁使用defined关键字判断一个hash中某个key是否存在,后来程序出了问题才去perl官方文档查看关于defined关键字的准确使用方法.因此,这里我把perl中 ...
随机推荐
- vue.js 使用v-model v-once
v-model 双向绑定 v-once 单项绑定 代码: <!doctype html> <html lang="en"> <head> < ...
- POJ2976Dropping tests(分数规划)
传送门 题目大意:n个二元组a[i],b[i],去掉k个,求sigma a[i]/ sigma b[i]的最大值 代码: #include<iostream> #include<cs ...
- pwntools出现的一些问题
pwntools用的好好的突然就不能用了总结了一些问题:ImportError:cannot import name ENUM_P_TYPE 解决方法为:将/usr/local/lib/python2 ...
- webpack与vue环境搭建(转载)
原文:https://www.cnblogs.com/lgx5/p/10732016.html npm安装教程 一.使用之前,我们先来掌握3个东西是用来干什么的. npm: Nodejs下的包管理 ...
- 【shell脚本】将三个数字进行升序排序===numSort.sh
从命令输入三个数字进行升序排序(冒泡排序) 原理:比较两个相邻的元素,将值大的元素交换至右端. 脚本内容: [root@VM_0_10_centos shellScript]# cat numSort ...
- hue框架介绍和安装部署
大家好,我是来自内蒙古的小哥,我现在在北京学习大数据,我想把学到的东西分享给大家,想和大家一起学习 hue框架介绍和安装部署 hue全称:HUE=Hadoop User Experience 他是cl ...
- touch.js - 移动设备上的手势识别与事件库
Touch.js 是移动设备上的手势识别与事件库, 由百度云Clouda团队维护,也是在百度内部广泛使用的开发工具.Touch.js手势库专为移动设备设计.Touch.js对于网页设计师来说,是一款不 ...
- CompletableFuture3
public class CompletableFuture3 { public static void main(String[] args) throws ExecutionException, ...
- Java自学-集合框架 Collection
Java集合框架 Collection Collection是一个接口 步骤 1 : Collection Collection是 Set List Queue和 Deque的接口 Queue: 先进 ...
- linux系统下安装配置Jenkins
准备java 环境 安装java sdk yum -y install java 验证是否安装成功 java -version 下载安装jenkins 官网:https://wiki.jenkins- ...