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
  • 相关阅读:
    【转】CUDA5/CentOS6.4
    【转】centos 6.4 samba 安装配置
    【转】Install MATLAB 2013a on CentOS 6.4 x64 with mode silent
    【转】Getting xrdp to work on CentOS 6.4
    【VLFeat】使用matlab版本计算HOG
    Unofficial Windows Binaries for Python Extension Packages
    March 06th, 2018 Week 10th Tuesday
    March 05th, 2018 Week 10th Monday
    March 04th, 2018 Week 10th Sunday
    March 03rd, 2018 Week 9th Saturday
  • 原文地址:https://www.cnblogs.com/baby-zuji/p/11201686.html
Copyright © 2011-2022 走看看