post和get的区别原理分析

post和get的区别

POST和GET是什么?

他是HTTP协议中两种发送请求的方式

HTTP

超文本传输协议:是一个设计来使客户端和服务器顺利进行通讯的协议。他是基于TCP/IP协议族的。

POST和GET如何发送请求

​ 在HTTP请求中,第一行必须是一个请求行(request line),用来说明请求类型、要访问的资源以及使用的HTTP版本。紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。在首部之 后是一个空行,再此之后可以添加任意的其他数据[称之为主体(body)]

  1. GET实例

    GET /books/?sex=man&name=Professional HTTP/1.1
    Host: www.wrox.com
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
    Gecko/20050225 Firefox/1.0.1
    Connection: Keep-Alive
    

    从上面我们可以看出get请求方式会将数据附在url之后用’?'隔开,参数是采用键值(key=vlaue)对以明文的方式显示在请求行中(这说明get方式不安全)。多个参数之间用&连接。Url的编码格式采用的是ASCII码,而不是Unicode码

  2. POST实例

    POST / HTTP/1.1
    Host: www.wrox.com
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
    Gecko/20050225 Firefox/1.0.1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 40
    Connection: Keep-Alive
         (----此处空一行----)
    name=Professional%20Ajax&publisher=Wiley
    

    从上面我们可以看出post请求方式会将数据放在body里面。

    总结:get没有post那么安全

POST和GET两种方式请求过程

首先我们必须清楚post和get是HTTP协议的,而HTTP协议是基于TCP/IP协议族的所以说post和get本质也是基于TCP/IP的,两种方式建立连接的过程也是通过三次握手。

  1. GET
    1. 浏览器请求tcp连接(第一次握手)
    2. 服务器答应进行tcp连接(第二次握手)
    3. 浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
    4. 服务器返回200 OK响应
  2. POST
    1. 浏览器请求tcp连接(第一次握手)

    2. 服务器答应进行tcp连接(第二次握手)

    3. 浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)

    4. 服务器返回100 Continue响应

    5. 浏览器发送数据

    6. 服务器返回200 OK响应

通过请求过程我们可以看出get似乎是比post快(但实际上两者差距可以忽略不计)

对于GET方式在URL中传送的参数有长度限制的误解

​ http协议中并没有规定get和post请求传递参数有长度限制,这些限制主要是因为浏览器的限制,如果URL太长会对服务器造成一种负担。不同浏览器之间对长度的限制不一样。

​ post方式由于不是通过url传递,理论上没有限制,但实际各个WEB服务器会规定对post提交数据大小进行限制。

参考:https://blog.csdn.net/xiaomin1991222/article/details/50979701

https://blog.csdn.net/zzk220106/article/details/78595108/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值