zoukankan      html  css  js  c++  java
  • GET和POST的区别

    首先,GET和POST是HTTP请求的两种基本方法~

    江湖上”流传的GET和POST区别

    1、GET提交的数据会放在URL之后,以 ?分割URL和传输数据,参数之间用 & 相连,如 EditPosts.aspx?name=boKeYuan&id=123456;POST方法是把提交的数据放在HTTP包的Body中

    2、GET提交的数据大小有限制(注意:Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制,这个限制是特定的浏览器及服务器对它的限制);POST方法提交的数据没有限制

    3、对参数的数据类型,GET只接受ASCII字符;而POST没有限制

    4、GET请求参数会被完整保留在浏览器历史记录里;而POST中的参数不会被保留

    5、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息

    HTTP

    1、HTTP是是基于TCP/IP协议族的关于数据如何在万维网中通信的协议。HTTP定义了很多与服务器交互得方法,最基本的有四种:GET、POST、PUT、DELETE,这四个方法对应着对请求资源的查、改、增、删 4个操作。本篇文章只介绍GET和POST。

    2、HTTP的底层是TCP/IP,所以GET和POST底层也是TCP/IP。封装好的HTTP报文是要交给TCP去处理的。

    TCP

    1、TCP是运输层的协议,将应用层传过来的HTTP报文分割成报文段,传送给通信的对方,TCP是可靠交付,能够保证数据完整的传达给对方。

    2、在整个万维网世界中,会有无数个TCP连接,怎么区分这些TCP连接呢?这就要用到协议规范HTTP了,HTTP指明每一个TCP连接是POST或者GET。

    HTTP只是个行为准则,而TCP才是POST和GET怎么实现的基本。

    浏览器和服务器

    1、TCP在浏览器和服务器之间建立连接,并且在两者之间按照客户需求传输信息(数据)。如果传输的信息过大,对于浏览器和服务器来说都是很大的负担,大多数浏览器都会限制 URL 在2K个字节,而大多数服务器最多处理64K大小的 URL。超出的部分,直接丢弃~

    2、上面提到过,GET方法的数据是放在 URL 中的,如果你在 request body 中偷偷藏了数据,不同的服务器处理方式也是不同的,有的会“好心”读出,有的则“视而不见”~

    3、说到这里,你应该明白了,GET和POST本质上就是TCP连接。

    GET和POST的根本区别

    GET产生一个数据包,POST产生两个数据包

    多数浏览器(Firefox就只发送一次)对于POST采用两阶段发送数据:先发送请求头(header数据),再发送请求体(body部分)。这会导致在传输层中出现两次TCP连接,对于TCP来说,通信次数越多可靠性越低,能在一次连接中传输完需要的消息是最可靠的。

    而GET方法只需要建立一次连接就能发送所有数据了。

    使用情况

    POST和GET各有自己的优缺点,根据需求来选择使用GET或POST。

    1、比如有人这样问,POST需要两步,时间上消耗的更多,能否用GET来替换POST?

    显然不能

    • GET与POST都有自己的语义,不能随便混用
    • 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点

    并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次

    2、GET不安全,能否全部用POST?

    显然也不能

    • 对数据请求频繁,数据不敏感且数据量在普通浏览器最小限定的2k范围内,这样的情况最适合使用GET
  • 相关阅读:
    在Arcscene绘制管线三维横断面(AE绘制三维点阵文字)
    MapControl控件AddLayer出现错误-引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常
    c# 集合
    springmvc:第一个springmvc程序
    springmvc:简介
    VocabularyAccumulation
    Spring:整合Mybatis
    Spring:动态代理及Aop
    Spring:自动装配及注解
    Spring:Ioc(依赖注入)
  • 原文地址:https://www.cnblogs.com/baby-zuji/p/11201686.html
Copyright © 2011-2022 走看看