5分钟快速梳理你的HTTP体系

海军
• 阅读 1454

5分钟快速梳理你的HTTP体系

HTTP 定义

  1. HTTP(超文本传输协议) 是 客户端 与 服务端 之间信息交流的 桥梁。
  2. 在信息交流之前必须要做的就是 客户端通过连接TCP/IP协议 80 端口 ,以便 服务端侦听HTTP请求。 3.HTTP 是 一种通用的 , 无状态的应用层协议,基于标准客户机/服务器模型。

HTTP 特点

1.采用 “请求/响应”的交互模式, 客户端发送请求,服务端接受请求,处理请求,并将处理结果返回给客户端。服务端不会主动发送请求。
2.协议设计灵活,拓展性好,HTTP可以通过扩展新的请求方法实现新的功能。
3.无状态: 协议对于事务处理没有存储功能,意思就是如果上次响应的结果在该请求中需要用,那么是用不了的。

缺点:
每次连接的数量增大。

优点:
1.服务器处理速度快,效率高
2.避免0了集群特点间状态同步的开销。

4.持久连接: 连接可以重复使用,提高了网络连接使用效率。 持久连接 在HTTP1.1中已 经是默认选项。 5.支持内容协商

HTTP 请求/响应交互模型

5分钟快速梳理你的HTTP体系

HTTP 常用请求方法

  • GET 方法

    1.GET 方法 是 客户端 向服务端 获取资源时使用的,资源类型有图片,音频,HTML.....
    2.服务器在处理GET请求时,它会根据客户端发送过来的url上具体参数进行返回结果处理。
    3.当用GET请求获取数据量较大时,可能会出现传输过程中断情况,HTTP协议提供了断点续传机制,通过GET 方法获取资源时可以指定获取的起始点。

  • POST 方法

    1.POST 方法主要是 客户端向服务端发送数据资源。

    2.POST 和 GET 方法区别:

    POST 请求会包含信息体,信息体中携带了要发送给服务端的数据。
  • HEAD 方法

    1. HEAD 方法 和 GET 方法 POST方法类似
      1. 区别在于:
        GET方法返回的请求URL标识资源内容本身
        HEAD方法仅仅返回相关响应头信息,不返回资源内容

      2. HEAD 方法 主要用于 测试资源是否存在,是否被删除或修改
  • PUT 方法

    PUT方法用请求有效载荷替换目标资源的所有当前表示。

  • DELETE

    DELETE方法删除指定的资源。

HTTP URI

  • URI

    1.定义

    URI,通一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行定位的。    

    2.URI的结构组成:

    ①访问资源的命名机制;

    ②存放资源的主机名;

    ③资源自身的名称。

    3.实例 https://xxx.xxx.com/details/1 ①这是一个可以通过https协议访问的资源,

    ②位于主机 xxx.xxx.com上,

    ③通过“/details/1”可以对该资源进行唯一标识(注意,这个不一定是完整的路径)

  • URI 构成

    • URL 统一资源定位符
    • 统一资源名称
  • URL

    1.定义

    URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。

    2.URL的一般格式为(带方括号[]的为可选项): protocol :// hostname[:port] / path / [;parameters][?query]#fragment

    3.URL的格式由三部分组成: ①第一部分是协议(或称为服务方式)。

    ②第二部分是存有该资源的主机IP地址(有时也包括端口号)。

    ③第三部分是主机资源的具体地址,如目录和文件名等。

    第一部分和第二部分用“://”符号隔开,

    第二部分和第三部分用“/”符号隔开。

    第一部分和第二部分是不可缺少的,第三部分有时可以省略。

URL 和 URI 区别

URI:统一资源标志符(Uniform Resource Identifier) URL:统一资源定位符(uniform resource location) 说白了,URI与URL都是定位资源位置的,就是表示这个资源的位置信息,就像经纬度一样可以表示你在世界的哪个角落。URI是一种宽泛的含义更广的定义,而URL则是URI的一个子集,就是说URL是URI的一部分。 换句话说,每个URL都是URI,但是不是每个URI都是URL的。

HTTP 发送请求

5分钟快速梳理你的HTTP体系

HTTP 响应请求

5分钟快速梳理你的HTTP体系

HTTP 状态码

100 Continue 继续。客户端应继续其请求

101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议

200 OK 请求成功。一般用于GET与POST请求

201 Created 已创建。成功请求并创建了新的资源

202 Accepted 已接受。已经接受请求,但未处理完成

203 Non-Authoritative Information 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本

204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档

205 Reset Content 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域

206 Partial Content 部分内容。服务器成功处理了部分GET请求

300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择

301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替

302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

303 See Other 查看其它地址。与301类似。使用GET和POST请求查看

304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源

305 Use Proxy 使用代理。所请求的资源必须通过代理访问

306 Unused 已经被废弃的HTTP状态码

307 Temporary Redirect 临时重定向。与302类似。使用GET请求重定向

400 Bad Request 客户端请求的语法错误,服务器无法理解

401 Unauthorized 请求要求用户的身份认证

402 Payment Required 保留,将来使用

403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求

404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面

405 Method Not Allowed 客户端请求中的方法被禁止

406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求

407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权

408 Request Time-out 服务器等待客户端发送的请求时间过长,超时

409 Conflict 服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突

410 Gone 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资 源的新位置

411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息

412 Precondition Failed 客户端请求信息的先决条件错误

413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息

414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理

415 Unsupported Media Type 服务器无法处理请求附带的媒体格式

416 Requested range not satisfiable 客户端请求的范围无效

417 Expectation Failed 服务器无法满足Expect的请求头信息

422 Conflict 表明由于所提供的的作为请求部分的数据非法,创建或修改操作不能被完成

429 TooManyRequests 表明超出了客户端访问频率的限制或者服务端接收到多于它能处理的请求。建议客户端读取相应的Retry-After 首部,然后等待该首部指出的时间后重试。

500 Internal Server Error 服务器内部错误,无法完成请求

501 Not Implemented 服务器不支持请求的功能,无法完成请求

502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中

504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求

505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本

HTTP 状态码分类

1** ------------------------------------> 信息,服务器收到请求,需要请求者继续执行

2** ------------------------------------> 成功,操作被成功接收并处理

3** ------------------------------------> 重定向,需要进一步的操作以完成请求

4** ------------------------------------> 客户端错误,请求包含语法错误或无法完成请求

5** ------------------------------------> 服务器错误,服务器在处理请求的过程中发生了错误

彩蛋环节

5分钟快速梳理你的HTTP体系

结语

❤️关注+点赞+收藏+评论+转发❤️,原创不易,鼓励笔者创作更好的文章

关注公众号 “前端自学社区”,即可获取更多前端高质量文章!

关注后回复关键词“加群”, 即可加入 “前端自学交流群”,共同学习进步。

关注后添加我微信拉你进技术交流群

欢迎关注公众号,更多精彩文章只在公众号推送

5分钟快速梳理你的HTTP体系

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Wesley13 Wesley13
3年前
java 实现websocket
最近了解了下websocket和socket这个东西,说不得不来说下为何要使用WebSocket,和为何不用http。为何需要WebSocket?HTTP协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。这种通信模型有一个弊端:HTTP协议无法实现服务器主
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Souleigh ✨ Souleigh ✨
3年前
前端性能优化 - 雅虎军规
无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的
Stella981 Stella981
3年前
Django_初识
HTTP协议超文本传输协议(应用层的,基于tcp\ip协议的)特点:无状态,无连接(短连接)请求消息格式:请求行\请求头部\空行\请求数据请求行:GET路径HTTP/1.1响应消息格式:响应行\响应头部\空行\响应数据响应行:HTTP/1.1状态码状态
Wesley13 Wesley13
3年前
http协议请求响应详解
http协议请求响应详解一、http协议简介HTTP是HyperTextTransferProtocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程及数据本身的格式。二、HTTP1.0的基本运行方式1、基于HTTP协议(https://www.osc
Stella981 Stella981
3年前
Http基础解析
Http基础解析\\概念\\:HyperTextTransferProtocol超文本传输协议\传输协议:定义了,客户端和服务器端通信时,发送数据的格式\特点:1\.基于TCP/IP的高级协议2\.默认端口号:803\.基于请求/响应模型的:一次请求对应一次响应4\.
Wesley13 Wesley13
3年前
HTTP协议的头信息详解
HTTP协议的头信息详解HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。
Wesley13 Wesley13
3年前
HTTP协议简介
关于HTTP协议的基本介绍。<!moreHTTP协议是基于TCP/IP协议之上的应用层协议,主要用于规定互使用联网中客户端和服务器之间的通信格式,不关心具体传输细节,默认80端口。对于Web开发,不管是前端还是后端开发,了解HTTP协议是必备的一些基本知识。发展历程HTTP/0.9于
海军
海军
Lv1
海军,专注Web前端领域开发,分享开发经验与最新前端技术。 微信公众号: 前端自学社区
文章
27
粉丝
11
获赞
33