HTTP的几种请求方式


说起http协议,想必大家都不陌生,无非就是请求与响应。但是让你讲讲原理呢,可能就不太轻松了吧。

HTTP原理

http协议定义web客户端如何如何从web服务器请求web页面,以及服务器如何把页面传给客户端。Http协议采用请求响应模式,客户端发送一个http请求报文,请求报文包括请求头,请求方法,协议版本,url,请求数据。然后服务器接收处理,以状态行进行响应,响应的内容有状态码,协议版本,成功或失败代码,服务器信息,响应头,响应数据。

Http请求流程

1 web客户端连接服务器
与web服务器的80端口建立套接字连接,默认80端口

2 发送http请求
通过TCP套接字,客户端向web服务器文本的请求报文,包括请求行,请求头部,空行,请求数据组成

3 响应请求并且返回http响应
web服务器解析请求,定位资源,然后把资源副本写到tcp套接字,有客户端读取。一个相应由状态行,响应头部,响应数据,空行四部分组成。

4 断开tcp连接
若connnection为close,服务器关闭连接,客户端被动关闭;如果connection为keepalive,则连接会保持一段时间,在这段时间可以继续收到请求。

5 浏览器解析html内容

Http的主要请求流程就是这些了,接下来我们讲讲http的几种方式。

  • get
    请求指定页面信息,返回实体主体,数据包含在url里

  • post
    向指定资源提交数据处理请求。数据包含在请求体里

  • head
    类似get请求,返回响应里没有内容,用于获取头

  • put
    从客户端传送数据替代指定文档的内容

  • delete
    请求服务器删除指定页面

  • connect
    http1.1协议预留给能够把连接方式改为管道的代理服务器

  • options
    允许客户端查看服务器性能

  • trace
    回显服务器收到的请求,用于测试或诊断

  • patch
    是对put方法的补充,对已知资源局部更新

面试常会问的一个问题,GET和POST的区别

注意,注意:无区别
其实总的来说,get和post都是http协议里的,而http协议底层是通过tcp协议来进行通信的,所有get,post走的路线也是同一条路,所以本质上是没有区别。要真的说区别,是http协议规定出来的两种方式,和浏览器的一些限制。

倘若真的要说区别的话,从携带信息,浏览器,安全性,url长度
(1) get在浏览器回退是无害的,post会再次提交请求
(2) get请求会被浏览器主动cache,而post请求不会
(3) get在url中传递的参数长度是有限制的,而post没有
(4) get没有post安全,在url暴露参数
(5) get参数通过url传递,post通过request body传递

像上面几点都是浏览器对post,get方式所做的不同处理,并不是post,get的本质区别。但是
我们也不能说完全没有区别,他们最大的一点区别就是get产生一个tcp数据包,post产生两个tcp数据包,

当我们用get方式发送时,浏览器会将header和data一起发送过去,返回状态码200,一次tcp
当我们用post方式发送时,浏览器会先将header发送过去,返回状态码100,认为可以继续发送,
然后第二次把data发送过去,返回状态码200;二次tcp(这个具体还是与浏览器有关,有的也是一次发送)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值