• GET POST 区分


    get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

    get安全性非常低,get设计成传输数据,一般都在地址栏里面可以看到,post安全性较高,post传递数据比较隐私,所以在地址栏看不到, 

    如果没有加密,他们安全级别都是一样的,随便一个监听器都可以把所有的数据监听到。这也就是问什么通常get是从服务器上获取数据,post是向服务器传送数据

    GET请求能够被缓存,GET请求会保存在浏览器的浏览记录中,所以GET请求的URL能够保存为浏览器书签,post请求不具有这些功能。

    GET请求在URL中传送的参数是有长度限制的,而POST没有
    GET请求把参数包含在URL中,将请求信息放在URL后面,POST请求通过request body传递参数,将请求信息放置在报文体中。

    Get在浏览器回退时是无害的,而Post会再次提交请求。无害的意思只是数据不变
    当从一个页面请求到另一个页面,再返回到当前的页面,get只是发生了一次,post发生了两次

    幂等性
    HTTP幂等方法,是指无论调用这个url多少次,结果都是相同的HTTP方法

    GET请求只能进行url编码,而Post支持多种编码方式 
    对于参数的数据类型,GET只接受ASCII字符,post没有限制

    让我们扒下两者的外衣,坦诚相见吧(好吧,是本质区别)

    HTTP的底层是TCP/IP,GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。它们的本质都是 TCP 链接,并无区别。

    之所以区分get跟post。主要是为了方便区分。因为功能多了。总要区分嘛。浏览器也需要区分对待。不然统一处理的话难免会浪费一些资源啊。多消耗时间之类的。比如说get有长度限制。这都是浏览器限制的。
    因此GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。虽然这样子做并不符合 HTTP 的规范。

    它们不同的产生是由于 HTTP 的规定以及浏览器/服务器的限制,导致它们在应用过程中可能会有所不同。

     
    GET产生一个TCP数据包,POST产生两个TCP数据包。
    对于get请求方式,浏览器会把http header 和data一起发送出去,服务器响应200(返回数据)。
    而对于post,浏览器先发送header,服务器响应100 continue,浏览器在发送data,服务器响应200返回数据。
    据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
    并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
     
  • 相关阅读:
    内蒙古草原之行
    【iOS开发笔记25/50】:正则表达式
    读书笔记:《写给大家看的设计书》
    【iOS开发笔记22/50】:恼人的a valid provisioning profile for this executable was not found错误
    【搞定GTD】打造高效的OmniFocus系统
    【iOS开发笔记24/50】调整UIImage的大小
    【iOS开发笔记26/50】我自己写的苹果应用程序XQViewer终于上架了,解决了一系列的问题,终于挺过来了
    桥牌笔记:双挤
    养成一个习惯需要几年,而毁掉一下习惯只需要一天
    使用SuperMemo背单词2000天,抓图纪念一下!
  • 原文地址:https://www.cnblogs.com/skydragonli/p/11370334.html
Copyright © 2020-2023  润新知