2023年6月28日发(作者:)
⽹络中应⽤层协议⽹络中应⽤层协议⼀:基础概念:(⼀)应⽤层的功能/职责应⽤层负责程序之间的数据沟通–⽽应⽤程序是程序员写的,所以应⽤层协议也是程序员⾃⼰制定的,通常应⽤层协议分为⾃定制协议(⾃⼰定义的协议)与知名协议(HTTP/HTTPS/DNS…)(⼆)超⽂本⽂件WWW上的每个⽹页都对应⼀个⽂件。我们浏览⼀个页⾯,要先把页⾯所对应的⽂件从提供这个⽂件的计算机⾥,通过Internet传送到我们⾃⼰的计算机中,再由WWW浏览器翻译成为我们见到的有⽂字、有图形甚⾄有声⾳的页⾯。这些页⾯对应的⽂件不再是普通的“⽂本⽂件”,⽂件中除包含⽂字信息外,还包括了⼀些具体的链接。这些包含链接的⽂件被称为超⽂本⽂件和普通⽂本相⽐,超⽂本⽂件中多了⼀些对⽂件内容的注释,这些注释表明了当前⽂字显⽰的位置、颜⾊等信息,更重要的是,在有些注释中包含了对⽤户计算机应做出何种反应的说明,这些注释的内容经过浏览器的翻译后就成了不同的操作为了使各种不同类型的WWW服务器都能正确地认识和执⾏,超⽂本⽂件要遵从⼀个严格的标准,这个标准就是超⽂本标识语⾔(HTML),我们也可以利⽤这种语⾔来编写超⽂本⽂件,在Internet上制作⾃⼰的WWW的主页。(三)URLURL称为统⼀资源定位符是⽤来表⽰从因特⽹上得到的资源位置和访问这些资源的⽅法。URL给资源的位置提供了⼀种抽象的识别⽅法并⽤这种⽅法给资源定位,只要能够定位,系统就可以对资源进⾏各种操作,如存取,更新,替换和查找其属性。互联⽹上的每个⽂件都有⼀个唯⼀的URL,它包含的信息指出⽂件的位置有以及浏览器应该怎么处理它。1. URL与URI的区别URI表⽰ 统⼀资源标识符,标识某⼀个互联⽹的资源,URL是URI的⼦集。URL是URI的⼀种具体表现形式URL就是⽤定位的⽅式实现URI,不仅唯⼀标识资源,⽽且还提供了定位该资源的信息。(四)长链接与短链接1. 长连接: 浏览器服务器建⽴连接后,如果两次以上的请求复⽤同⼀个TCP连接,则称为长连接,即连接⼀次后可以进⾏多次数据交互。2. 短连接: 如果浏览器发送⼀次请求报⽂,服务器回复⼀次应答就断开连接,下次交互再重新进⾏三次握⼿建⽴连接,那么就称为短连接。因为长链接中减少了同步报⽂,可以使服务器响应速度变快⼆:应⽤层协议:(⼀):⾃⼰定制的协议⽹络版计算器:客户端向服务端传递两个数字以及⼀个运算符,服务端收到数据后进⾏解析得到数字与运算符,然后进⾏计算,把结果返回给客户端 intnum1 = 10;int num2 = 20; char op = ‘+’客户端需要将多个数据对象进⾏格式组织,然后通过⽹络数据传输,传递给服务端1.将三个数据对象组织成⼀个字符串:”10;20;+”2.将三个数据对象在内存中进⾏⼆进制的排列:定义9个字节的空间,前4个字节放第⼀个数字,中间4个字节放第⼆个数字,最后⼀个字节放运算符 — 如何实现数据在内存中的组织排布呢? ---- 结构体Typedef struct_tmp_t{Int num1;Int num2;Char op;}序列化:将数据对象按照指定协议进⾏组织成可持久化存储/数据传输的⼆进制数据串反序列化:将持久化存储/数据传输的⼆进制数据串按照指定协议解析出各个数据对象常见的数据序列化⽅式有很多:json序列化;protobuf序列化1.⾃定制协议的思路2.序列化/反序列化的概念使⽤结构体组织数据其实就是数据对象的⼆进制序列化(⼆):知名协议DNSDNS:域名系统—⽤于域名解析,通过域名获取IP地址的系统域名: — 服务器的名称,⽅便记忆域名服务器:采⽤分布式存储,域名解析服务器遍布世界各地、进⾏了层级划分,增加了容灾能⼒,并且提⾼了性能压⼒域名服务器的层级划分:根域名服务器,顶级域名服务器,⼆级域名服务器,三级域名服务器域名域名的解析流程:1.查看浏览器缓存2.解析hosts⽂件3.向本地dns服务器发送请求4.请求根域名服务器5.请求顶级域名服务器6.请求⼆级域名服务器7.请求三级域名服务器在第3步没找到时,就从第4步开始可以进⾏递归或者迭代的请求域名的划分:顶级域名(.com/.org/.cn/.jp),⼆级域名(.),三级域名(.)浏览器中输⼊发⽣了什么?1. 域名解析,得到服务器IP地址2. 组织http请求数据3. 搭建tcp客户端,请求建⽴连接,发送http请求数据4. 等待服务器响应,进⾏解析(根据content-type判断是什么类型的数据,是否展⽰在页⾯上,如果是html类型,就要对其进⾏渲染),解析后将正⽂数据展⽰在浏览器上1 . DNS解析是⼀种查询服务,查询要求的是速度,⽽不是精准度,所以⽤UDP。2 . DNS⼤多数的名字都在本地进⾏解析,仅少量解析需要在因特⽹上通信,因此DNS系统的效率很⾼。(三):知名协议HTTP与⽤⼀句话总结,HTTP就是⽤来规范web服务器与浏览器客户端之间传输超⽂本⽂件的⼀个协议,它不仅保证计算机正确快速地传输超⽂本⽂档,还确定传输⽂档中的哪⼀部分,以及哪部分内容⾸先显⽰(如⽂本先于图形)等,使⽤的是80号端⼝http协议有⼀个⾮常好的优点:http协议给程序员留有⼀定的⾃定制空间浏览器与Web服务器在应⽤层通信使⽤ HTTP协议。HTTP协议在传输层使⽤的是TCP协议,所以:1. 浏览器需要和Web服务器三次握⼿建⽴连接:连接建⽴成功后才可以发送HTTP请求报⽂,服务器收到请求报⽂后,向浏览器回复HTTP应答报⽂。2. 浏览器向服务器发送连接前,需要得到服务器的IP及端⼝:⽤户在浏览器中通常只输⼊⽹址(⽹站域名),浏览器会通过DNS服务查询获取到的服务器的IP地址,对于端⼝来讲,使⽤HTTP协议的程序⼀般默认使⽤80端⼝。⽹址:统⼀资源定位符(定位⽹络中唯⼀⼀份资源) – URL统⼀资源定位符如何定位⽹络中唯⼀的资源? — URL的格式以及所包含的要素如下图:URL主要的信息就是请求的资源路径以及提交的查询字符串为什么要进⾏URL编码:⽤户提交给服务器的查询字符串中的val需要进⾏URL编码–因为URL中有很多特殊字符具有特殊的含义,如果⽤户提交的数据中也有相同的特殊字符,就会造成歧义,因此需要对val进⾏URL编码操作URL编码规则:URL编码:将特殊字符(中⽂也是特殊字符)的每⼀个字节都转换成为16进制数字的字符:如 ‘+’ 转换为 2b;万⼀要是⽤户本⾝提交的数据就与2b,也会造成歧义;因此对每个字节进⾏转换之后,需要在前边加上⼀个%表⽰紧跟其后的两个字符经过了url编码 ‘+’ 转换为%2b,C++转换程 C%2b%2bURL解码规则:URL解码:得到查询字符串之后,在val中若遇到%,则认为紧跟其后的两个字符需要解码–将两个字符转换为数字%2b -> 2 11,2*16+11 = 43即 ‘+’的ASCII值抓包⼯具:HTTP的抓包⼯具,在LINUX下⾃带有tcpdump,在windows可以⽤Fiddler⼯具来进⾏抓包Fiddler是⼀个浏览器抓包⼯具,抓取浏览器与服务器之间的通信数据Fiddler的原理以及如何使⽤如下图:HTTP的通信过程:过程的⽂字描述:1. 输⼊域名,例如百度的⽹址,客户端先通过本地DNS服务器获取百度服务器的IP地址,端⼝号默认80.2. 得到IP和端⼝号,通过connect和服务端进⾏三次握⼿建⽴连接。3. 连接建⽴成功后,浏览器向服务器发送HTTP请求报⽂,即想要获取的⽹页信息如百度⾸页4. 服务器根据请求返回应答报⽂和应答数据5. 客户端收到后浏览器通过渲染得到⽹页画⾯1.1HTTP的特点1. ⽆状态⽆状态的含义:是每⼀次HTTP请求是没有联系的,当客户端⼀次HTTP请求完成过后,再⼀次请求,HTTP并不知道当前客户端是⼀个⽼⽤户。也就是说⼀个浏览器的连续两次⽹页请求之间没有任何关联,它们将被Web服务器独⽴处理。⽆状态会带来很多问题,⽐如你在京东⽹站第⼀个页⾯选择购买商品,跳转到第⼆个页⾯进⾏⽀付,这个时候服务器⽆法显⽰信息,因为它认为这两个页⾯是独⽴的,所以需要使⽤机制,让服务器知道始终是⼀个客户端在访问。解决这个问题的办法就是使⽤Cookie/Session:(1) Cookie:在客户端内存中开辟⼀块内存,即给每⼀个客户端设置⼀个标识符,第⼀次进⾏页⾯请求时,设置Cookie,下⼀次访问就不⽤再次进⾏页⾯请求了。Cookie保存在客户端浏览器上,⽤来确定⾝份;(2)Session:当访问服务器某个页⾯时,在服务器开辟⼀块内存,这块内存就是Session,记录了当前客户端的信息,同⼀个session就被认为是⼀个客户端。Session 是保存在服务器端上会存在⼀段时间才会消失,如果 Session 过多会增加服务器的压⼒。2. ⽆连接:⽆连接的含义是限制每次连接只处理⼀个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接,采⽤这种⽅式可以节省传输时间。可以⽤keep-alive长链接来解决3. 简单快速:客户向服务器请求服务时,只需传送请求⽅法和路径。请求⽅法常⽤的有GET、HEAD、POST。每种⽅法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模⼩,因⽽通信速度很快。4. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中⽤来表⽰内容类型的标识)加以标记。1.2HTTP请求报⽂HTTP请求报⽂结构:1. 请求⾏:请求⽅法 URL 协议的版本 Get / HTTP/1.1(⼀)请求⽅法:不同的请求⽅法具有不同的负责功能GET:请求获取⼀个资源,并要求服务器返回实体的正⽂数据,GET是没有正⽂的POST:向服务器提交表单数据HEAD:请求获取⼀个资源,并不要求服务器返回实体数据,只要头部信息GET/POST的区别:get也能向服务器提交数据,但是提交的数据是在URL中的查询字符串/⽽POST提交的数据是在正⽂中,GET提交数据是不太安全的,因为URL是暴露的,并且URL的长度是有限制的DELETE:请求服务器删除指定资源(⼆)URL:主要信息就是请求的资源路径以及提交的查询字符串(三)协议版本: HTTP 0.9/1.0/1.1/20.9中默认只⽀持⼀个GET请求⽅法并且是短连接,http在传输层使⽤TCP协议,短连接指的是发送⼀个请求,得到⼀个响应这个来回结束后就断开连接1.0⽀持了GET/HEAD/POST请求⽅法,并且⽀持长连接,默认的还是短链接1.1⽀持了更多的请求⽅法,并且新增了更多的特性,⽐如默认⽀持长连接,并且⽀持管线化传输2.0以前都是客户端主动向服务器发送请求,2.0中⽀持服务端向客户端主动推送消息浏览器向服务器HTTP请求报⽂⽰例:HTTP的常见请求⽅法:请求⽅法GET请求⽅法的含义申请获取资源,⽽不对服务器产⽣任何其他影响请求⽅法HEADPOSTPUTDELETE请求⽅法的含义和GET⽅法类似,不过仅要求服务器返回头部信息,⽽不需要传输任何实际内容客户端向服务器提交数据的⽅法,这种⽅法会影响服务器,服务器可能根据收到的数据动态创建新的资源,也可能更新原有的资源上传某个资源删除某个资源1.3HTTP响应报⽂HTTP响应报⽂结构:HTTP响应报⽂:1. 状态⾏:HTTP 协议版本、状态码、状态信息 HTTP/1.1 200 OK。2. 头部字段:其表⽰⽅法和 HTTP 请求中的头部字段的相同3. 实体主体:⼀般不使⽤(⼀)响应⾸⾏:包含三⼤信息,以空格进⾏间隔,以rn作为结尾,协议版本 响应状态码 状态码描述rn(⼆)响应状态码:向客户端反应本次请求的处理结果状态–包含五⼤类型:1xx,2xx,3xx,4xx,5xx1xx:⼀些描述信息2xx:本次请求正确处理完毕,200表⽰请求成功3xx:重定向,本次请求的资源可能移动到其他位置,请客户端重新请求新的位置,301,302,303–查看其他地址4xx:客户端错误,400客户端请求语法错误/404访问资源不存在5xx:服务端错误,500服务器内部错误,501服务器不⽀持请求的功能(三)状态码描述:对于本次状态码的描述信息服务器对浏览器的响应⽰例:HTTP响应状态码:状态类型1XX2XX3XX4XX5XX状态码100 Continue200 OK301404 NotFound500状态码含义服务器端收到了客户端发送的请求⾏与头部信息,并要求客户端继续发送请求成功资源被转移,请求被重定位请求资源不存在服务器端出错1.4请求报⽂与响应报⽂的其他部分1. 头部:针对本次请求/响应的⼀些键值对信息,每个键值对都⽤rn隔开,如Content-Lenth:xxrnContent-Type:xxrnLocation:xx1. Connection:描述当前连接是否是长连接 close/kepp-alive2. Content-Length:描述当前正⽂数据的长度(通过这个描述信息告诉对⽅本次请求应该接收多长的数据)3. Content-Type:描述了正⽂的类型—告诉对⽅应该怎么处理正⽂4. Referer:告诉服务器,本次请求是从哪个⽹页点击请求过来的5. Location:123.207.58.25/ ⽤来搭配3xx使⽤,通过描述的地址信息告诉客户端重新去请求指定的这个地址6. Cookie/Set-Cookie:因为HTTP协议是⼀个⽆状态协议,例如⽹上购物:http是⼀个短链接,买个硬盘要登陆⼀次,买个键盘⼜要登陆⼀次服务端为每⼀个登陆的客户端在服务端主机上创建⼀个session(会话);会话中描述了客户端的各种信息;将session保存在数据库中,通过Set-Cookie将sessionid以及重要的信息返回给客户端;客户端将其中的信息保存在Cookie⽂件中,下次请求服务端的时候会⾃动从cookie⽂件中读取信息,通过cookie传递给服务端7. Cookie与Session的区别:Session是服务端为每⼀个客户端单独创建的⼀个会话,会保留有客户端的认证等信息,保存在服务端Cookie是服务端通过Set-Cookie响应给客户端的信息,保存在客户端,下次请求服务器的时候会携带有Cookie信息2. 空⾏:⽤来间隔头部与正⽂3. 正⽂:可选的消息体,在请求报⽂中⼀般不使⽤这个字段,在响应报⽂中也可能没有这个字段。如果消息体⾮空,则 HTTP 请求的头部字段必须包含该消息体长度的字段 Content-Length。1.5补充⽹址的元素:协议⽅案名称://⽤户名:密码@服务器IP地址:端⼝/资源路径?查询字符串#⽚段标识符 — ⽤户名和密码使⽤的⽐较少因为容易泄露隐私服务器端⼝:http默认使⽤80,https默认使⽤443端⼝GET和HEAD的区别:是否要服务器响应正⽂GET和POST的区别:发送的请求是否可以有正⽂;POST提交的数据在正⽂中,GET提交的数据在URL的查询字符串中(安全性/长度限制)HTTP 1.1版本⽀持管线化传输 – 什么叫管线化传输?通常接受http数据的时候的流程:1.接收完整的http头部—接收数据直到rnrn的时候,认为头部到此结束2.解析头部,根据头部中的Content-Length决定,正⽂应该接收多长,接收多少长度的相应正⽂:客户端提交给服务端的数据/服务端要给客户端发送的数据TTPS协议:其实就是加密后的HTTP协议;443端⼝HTTPS主要作⽤是:1. 对数据进⾏加密,并建⽴⼀个信息安全通道,来保证传输过程中的数据安全;2. 对⽹站服务器进⾏真实⾝份认证。HTTPS到底是如何进⾏加密传输的:通过ssl加密实现–⾮对称加密算法/对称加密算法 + 签名证书数据直接在⽹络中传输很容易被劫持修改,造成很⼤的安全隐患 – 对传输过程进⾏传输加密Https:将⾮对称加密和对称加密结合起来:将客户端与服务端进⾏动态协商对称加密算法的过程使⽤⾮对称加密进⾏保护起来,然后使⽤协商后的对称加密算法,对数据通信过程进⾏加密,这样既保证了安全,也保证了效率。但是若中间⿊客劫持了公钥数据,然后将⾃⼰的公钥发送给客户端所以有个签名证书(CA):进⾏⾝份认证并且传输公钥信息⼀个公司⽣成⼀对密钥之后,拿着密钥去权威机构掏钱⽣成⼀个签名证书,证书中包含:公钥信息,权威机构信息,当前公司机构的信息,有效时间…签名证书的作⽤就是防⽌⿊客中间劫持了公钥数据,然后将⾃⼰的公钥发送给客户端2.1对称加密与⾮对称加密1. 对称加密算法:如何加密就如何解密—加密算法和解密算法是⼀样的对称加密算法的优点:加密解密的效率⽐较⾼;缺点:容易被破解,使⽤时间长了就会被中间劫持,根据数据规律破解出加密算法,然后就可以解密数据缺点的解决⽅案:最好每次通信都动态协商⼀个新的加密算法2. ⾮对称加密算法:加密和解密的算法是不⼀样的—服务端⽣成⼀个公钥和私钥,将公钥传递给客户端,客户端使⽤公钥进⾏加密,服务端使⽤私钥解密公钥和私钥:通过加密算法得到的⼀对密钥(两串数据),公钥⽤于对于数据加密,私钥⽤于对加密后的数据进⾏解密,因为加密和解密⽅式不同,所以很难破解;就算中间公钥被⼈劫持,客户端使⽤公钥加密的数据也只能⽤私钥进⾏解密⾮对称加密算法的优点:安全性⾼,不容易被破解缺点:解密效率⽐较低3. ⼤家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进⾏加密,⽽加密过程是使⽤了⾮对称加密实现。但其实:HTTPS 在内容传输的加密上使⽤的是对称加密,⾮对称加密只作⽤在证书验证阶段。4. HTTPS协议的加密流程图:描述:Tcp通信的时候,连接建⽴成功之后,服务端就会⽣成⼀对公钥与密钥,然后拿着公钥去权威机构⽣成CA证书,然后将公钥与CA证书⼀起发送给客户端,客户端根据证书中的机构信息,进⾏⾝份验证,若⾝份验证不通过则可以直接断开连接;若⾝份验证通过,客户端⽣成⼀个随机值,然后使⽤公钥加密把随机值发送给服务段,服务段收到后根据这个随机值再⾃⼰⽣成⼀个随机值,然后两个随机值协商出⼀个对称加密算法,最终使⽤协商成功的对称加密算法对传输数据进⾏加密。2.2HTTPS可能会收到的威胁1. 威胁情况如何产⽣:中间⼈的确⽆法得到浏览器⽣成的密钥B,这个密钥本⾝被公钥A加密了,只有服务器才有私钥A’解开拿到它呀!然⽽中间⼈却完全不需要拿到密钥A’就能⼲坏事了。请看:1.某⽹站拥有⽤于⾮对称加密的公钥A、私钥A’。2.浏览器向⽹站服务器请求,服务器把公钥A明⽂给传输浏览器。3.中间⼈劫持到公钥A,保存下来,把数据包中的公钥A替换成⾃⼰伪造的公钥B(它当然也拥有公钥B对应的私钥B’)。4.浏览器随机⽣成⼀个⽤于对称加密的密钥X,⽤公钥B(浏览器不知道公钥被替换了)加密后传给服务器。5.中间⼈劫持后⽤私钥B’解密得到密钥X,再⽤公钥A加密后传给服务器。6.服务器拿到后⽤私钥A’解密得到密钥X。这样在双⽅都不会发现异常的情况下,中间⼈得到了密钥B。根本原因是浏览器⽆法确认⾃⼰收到的公钥是不是⽹站⾃⼰的。那么下⼀步就是解决下⾯这个问题:2. 如何解决这种不安全情况:怎么解决https不安全情况即如何证明浏览器收到的公钥⼀定是该⽹站的公钥?数字签名的制作过程:拥有⾮对称加密的私钥和公钥。对证书明⽂信息进⾏hash。3.对hash后的值⽤私钥加密,得到数字签名。明⽂和数字签名共同组成了数字证书,这样⼀份数字证书就可以颁发给⽹站了。那浏览器拿到服务器传来的数字证书后,如何验证它是不是真的?(有没有被篡改、掉包)3. 浏览器验证的过程:1.拿到证书,得到明⽂T,数字签名S。2.⽤CA机构的公钥对S解密(由于是浏览器信任的机构,所以浏览器保有它的公钥。详情见下⽂),得到S’。3.⽤证书⾥说明的hash算法对明⽂T进⾏hash得到T’。4.⽐较S’是否等于T’,等于则表明证书可信。为什么这样可以证明证书可信呢?我们来仔细想⼀下。中间⼈有可能篡改证书吗?假设中间⼈篡改了证书的原⽂,由于他没有CA机构的私钥,所以⽆法得到此时加密后签名,⽆法相应地篡改签名。浏览器收到该证书后会发现原⽂和签名解密后的值不⼀致,则说明证书已被篡改中间⼈有可能把证书掉包吗?假设有另⼀个⽹站B也拿到了CA机构认证的证书,它想搞垮⽹站A,想劫持⽹站A的信息。于是它成为中间⼈拦截到了A传给浏览器的证书,然后替换成⾃⼰的证书,传给浏览器,之后浏览器就会错误地拿到B的证书⾥的公钥了,会导致上⽂提到的漏洞。其实这并不会发⽣,因为证书⾥包含了⽹站A的信息,包括域名,浏览器把证书⾥的域名与⾃⼰请求的域名⽐对⼀下就知道有没有被掉包了。三:HTTP与HTTPS的区别:1. HTTP是互联⽹上应⽤最为⼴泛的⼀种⽹络协议,⽤于www服务器传输超⽂本到本地浏览器的传输协议,他可以使浏览器更加⾼效时⽹络传输减少。2. HTTPS简单来说就是HTTP的安全版。即在HTTP下加⼊SSL层,HTTPS的安全基础就是SSL。其主要作⽤包括建⽴⼀个信息安全通道来保证数据传输的安全另⼀个是确认⽹站的真实性。3. SSL协议位于TCP/IP协议与各种应⽤层协议之间,为数据通讯提供安全⽀持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol),它建⽴在可靠的传输协议(如TCP)之上,为⾼层协议提供数据封装、压缩、加密等基本功能的⽀持。SSL握⼿协议(SSL Handshake Protocol),它建⽴在SSL记录协议之上,⽤于在实际的数据传输开始前,通讯双⽅进⾏⾝份认证、协商加密算法、交换加密密钥等。,不提供任何⽅式的数据加密。如果攻击者截取了Web浏览器和⽹站服务器之间的传输报⽂,就可以直接读懂其中的信息,因此,HTTP协议不适合传输⼀些敏感信息,⽐如:信⽤卡号、密码等⽀付信息。由此设计出的HTTPS协议:由SSL+HTTP协议构建的可进⾏加密传输、⾝份认证的⽹络协议。4. HTTP与HTTPS的主要区别:协议需要到CA (Certificate Authority,证书颁发机构)申请证书,需要⼀定费⽤。是超⽂本传输协议,信息是明⽂传输,https则是具有安全性的ssl加密传输协议。和https使⽤的是完全不同的连接⽅式,⽤的端⼝也不⼀样,前者是80,后者是443。四:GET与POST的区别:1. 本质: GET是从服务器获取数据,不会对服务器进⾏影响,POST不仅可以获取数据还可以向服务器传送数据即影响服务器2. 安全性:POST的安全性⽐GET安全性⾼,GET提交数据,是通过URL传递数据,所以会将信息明⽂出现在URL上,POST是通过body体传输。3. 缓存:GET请求能够被缓存,GET请求会保存在浏览器的浏览记录中,能够保存为浏览器书签;POST不能被缓存,因为post可以修改数据,是有副作⽤的。4. 传输数据的⼤⼩:GET传递数据通过URL进⾏传递,受到不同浏览器的URL⼤⼩的限制,最长2048字符;POST没有长度限制。5. 后退⽅式:GET后退没有影响;POST会重新提交请求,因为后退相当于将修改的数据变成修改前。6. 编码⽅式:GET只⽀持URL编码⽅式,POST⽀持多种编码⽅式。7. 对参数的数据类型,GET只接受ASCII字符,⽽POST没有限制 。优缺点:1. 做数据查询的时候建议⽤GET2. 查询包含机密信息的话,建议⽤Post数据⽅式;在做数据添加、修改或删除时,也建议⽤Post⽅式。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687920448a57270.html
评论列表(0条)