HTTP请求的基础知识——HTTP中GET,POST和PUT的区别

一、Http请求过程

HTTP协议采用请求/响应模式,客户端向服务器发送一个请求报文,然后服务器响应请求。下面介绍一下一次HTTP请求的过程:

  1. 在浏览器中输入URL,并按下回车键
  2. 浏览器向DNS服务器请求解析该URL中的域名对应的IP地址(如果是IP请求,则不需要该步骤)
  3. 解析出IP后,根据IP和端口号,和服务器建立TCP连接
  4. 浏览器向服务器发送请求,该请求报文作为TCP三次握手的第三个报文发送给服务器
  5. 服务器做出响应,把数据发送给浏览器
  6. 通信完成,断开TCP连接
  7. 浏览器解析收到的数据并显示

二、HTTP请求方法(method)

HTTP/1.1有7种请求方法:1、GET;2、POST;3、PUT;4、DELETE;5、HEAD;6、TRACE;7、OPTIONS;

1、各个方法的作用:

GET对这个资源的查操作
DELETE对这个资源的删操作(注意:客户端无法保证删除操作一定会被执行,因为HTTP规范允许服务器在不通知客

户端的情况下撤销请求)

HEAD

与GET方法的行为很类似,但服务器在响应中只返回实体的头部分。可以快速获取资源信息,比如资源类型;

通过查看响应中的状态码,可以确定资源是否存在;

通过查看首部,测试资源是否被修改;

POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。(适用于更新操作)
PUT从客户端向服务器传送的数据取代指定的文档的内容。(适用于添加操作)
OPTIONS用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”
TRACE会在目的服务器端发起一个“回环”诊断,因为客户端在发起一个请求时,这个请求可能要穿过防火墙、代理、网关、或者其它的一些应用程序。这中间的每个节点都可能会修改原始的HTTP请求,TRACE方法允许客户端在最终将请求发送服务器时,它变成了什么样子。由于有一个“回环”诊断,在请求最终到达服务器时,服务器会弹回一条TRACE响应,并在响应主体中携带它收到的原始请求报文的最终模样。这样客户端就可以查看HTTP请求报文在发送的途中,是否被修改过了

 

 

 

 

 

 

 

 

 

 

 

 

2、主要的区别

1.PUT和POST

PUT和POS都有更改指定URI的语义.但PUT被定义为idempotent(幂等的)的方法,POST则不是.idempotent的方法:如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的。也就是说:PUT请求:如果两个请求相同,后一个请求会把第一个请求覆盖掉。(所以PUT用来改资源)Post请求:后一个请求不会把第一个请求覆盖掉。(所以Post用来增资源)

2.GET和POST

  • GET参数通过URL传递,POST放在Request body中,因此参数无法直接拿到,相对GET安全性较高(但是通过抓包工具,还是可以看到请求参数的)
  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。
  • Get 请求中有非 ASCII 字符,会在请求之前进行转码,POST不用,因为POST在Request body中,通过 MIME( 多用途互联网邮件扩展),也就可以传输非 ASCII 字符。
  • HTTP的底层是TCP/IP。HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。但是请求的数据量太大对浏览器和服务器都是很大负担。所以业界有了不成文规定,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。
  • GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
  • 在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。但并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
  • GET: 通过Request.QueryString获取变量的值;POST: 通过Request.form获取变量的值

 

三、HTTPS协议简介

HTTPS是安全的HTTP通道,即在HTTP通信中加入了SSL(当前版本是TLS1.2),通信的数据被加密了,防止被窃取,具体的通信流程如下:

HTTPS使用的加密方式结合了对称加密和不对称加密的特点,在保证安全的情况下,又提高了传输效率。HTTP和HTTPS的区别如下:

  • https协议需要到ca申请证书,一般免费证书很少,需要交费。
  • http的信息是明文传输,https 则是具有安全性的ssl加密传输协议。
  • http和https用的端口不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

 

内容整理来源如下:

http://www.cnblogs.com/logsharing/p/8448446.html

http://www.cnblogs.com/shanyou/archive/2011/10/17/2215930.html

http://www.jellythink.com/archives/806

https://www.cnblogs.com/breka/articles/9791664.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值