HTTP要求 的相干事件

HTTP要求

HTTP要求由三部份构成:

  • 要求行:包括要求要领、地点和HTTP的协定版本
  • 音讯报头:包括一系列的键值对
  • 要求正文(可选):和音讯报头之间有一个空行

信息报头中的主要信息有

  • Host 是要求报头域,用于指定被要求资本的 Internet 主机和端口号,它一般从 HTTP URL 中提掏出来;
  • Connection 示意衔接状况,keep-alive 示意该衔接是耐久连(persistent connection),即 TCP 衔接默许不封闭,能够被多个要求复用,假如客户端和效劳器发明对方有一段时刻没有运动,就能够主动封闭衔接;
  • Cache-Control 用于指定缓存指令,它的值有 no-cache, no-store, max-age 等,max-age=秒示意资本在当地缓存若干秒;
  • User-Agent 用于标识要求者的一些信息,比方浏览器范例和版本,操纵系统等; Accept
    用于指定客户端愿望接收哪些范例的信息,比方 text/html, image/gif 等;
  • Accept-Encoding 用于指定可接收的内容编码;
  • Accept-Language 用于指定可接收的自然语言;
  • Cookie 用于保护状况,可做用户认证,效劳器磨练等,它是浏览器贮存在用户电脑上的文本片断;

HTTP的要求体式格局

HTTP要求体式格局一般有几种体式格局

  • GET(SELECT):
    从效劳器掏出资本(一项或多项),从效劳器猎取指定(要求地点)的资本信息,它一般只用于读取数据,就像数据库查询一样,不会对资本举行修正
  • POST(CREATE):在效劳器新建一个资本。向指定资本提交数据(比方提交表单,上传文件),要求效劳器举行处置惩罚。数据被包括在要求正文中,这个要求可能会建立新的资本,或许更新现有的资本
  • PUT(UPDATE): 在效劳器更新资本(客户端供应转变后的完全资本)。经由过程指定资本的唯一标识(在效劳器上的详细寄存位置),要求效劳器建立或更新资本。
  • PATCH(UPDATE):在效劳器更新资本(客户端供应转变的属性)。
  • DELETE(DELETE):从效劳器删除资本。
  • HEAD:猎取资本的元数据
  • OPTIONS:猎取信息,关于资本的哪些属性是客户端能够转变的。

GET和POST的区分:

  1. get的数据在url上,post在request body上
  2. get只能举行url编码,post有多种编码体式格局
  3. get是tcp/ip一次,post是两次
  4. 对get的参数有字符限定,而post没有(浏览器对URL的长度有限定,所以GET要求不能替代POST要求发送大批数据)
  5. get要求会被浏览器缓存,然则post不会,除非手动设置
  6. 当浏览器回退时,get是没有影响的,然则post会再次提交要求
  7. 对参数的数据范例,get只能是ASCII字符,然则post没有限定
  8. 关于第三点中的:get只发生一个TCP数据包,post是两个数据包。get要求中会把header和data一并发送,然则post会先发送header,浏览器相应100 continue以后,再发送data。
  9. GET要求是幂等的

举个例子:
GET只须要汽车跑一趟就能把货送到,而POST要跑两趟。第一趟先去和效劳器打个招呼“hi,我等下要送一批货,你们打开门驱逐我”,然后再转头把货送过去。

由于POST须要两步,时刻上斲丧的要多一点,看起来GET比POST更有用,然则不能随意转变两种要求体式格局
1.get和post都有本身的语义,不能随意混用
2.收集环境好的时刻,发一次包的时刻和发两次宝的时刻基础能够疏忽。然则在收集环境差的情况下,两次包的TCP在考证数据包完全性上,有非常大的长处
3.并非一切浏览器都会在POST中发送两次包,Firefox就只发送一次。

HTTP特性

  • 客户端/效劳端形式
  • 简朴疾速:客户端向效劳器要求效劳时,经由过程传送要求体式格局、要求地点和数据体(可选)即可
  • 天真:许可传输恣意范例的数据对象,经由过程Content-Type标识
  • 无状况:对事物处置惩罚没有影象才能

小结

  • HTTP 是在收集上传输 HTML 的协定,用于浏览器和效劳器的通讯,默许运用 80 端口。
  • URL 地点用于定位资本,HTTP 中的 GET, POST, PUT, DELETE 用于操纵资本,比方查询,增添,更新等
  • GET, PUT, DELETE 是幂等的,POST 是不幂等的。
  • POST VS PUT

       
    - 运用 PUT 建立资本须要供应资本的唯一标识(详细寄存位置),POST 不须要,POST 的数据寄存位置由效劳器本身决议
    
    - 运用 PUT 更新某一资本,须要更新资本的悉数属性;而运用 POST,能够更新悉数或一部份值
    
    - POST 是不幂等的,PUT 是幂等的,这是一个很主要的区分
    
  • GET 可提交的数据量遭到 URL 长度的限定,HTTP 协定范例没有对 URL 长度举行限定,这个限定是特定的浏览器及效劳器对它的限定。
  • 理论上讲,POST 是没有大小限定的,HTTP 协定范例也没有举行大小限定,出于平安斟酌,效劳器软件在完成时会做肯定限定

    参考链接:

99%的人都明白错了HTTP中GET与POST的区分

    原文作者:jyren_Rachel
    原文地址: https://segmentfault.com/a/1190000008559575
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞