介绍HTTP

介绍 HTTP

HTTP 协议用于客户端和服务器端之间的通信。请求访问资源的一端被称为客户端, 而提供资源响应的一端被称为服务器端。

HTTP 是一种不保存状态的协议,即无状态(stateless) 协议,它不对之前发生过的请求和响应的状态进行管理。也就是说, 无法根据之前的状态进行本次的请求处理。

HTTP 报文

用于 HTTP 协议交互的信息被称为 HTTP 报文。 请求端(客户端) 的 HTTP 报文叫做请求报文, 响应端(服务器端) 的 HTTP 报文叫做响应报文。

HTTP 报文本身是由多行(用 CR+LF 作换行符) 数据构成的字符串文本。HTTP 报文大致可分为报文首部和报文主体两块。报文首部和报文主体由最初出现的空行(CR+LF)来划分。

  • 请求报文的报文首部由请求行、首部字段和其他组成。请求行由请求方法、 请求 URI、协议版本组成
  • 响应报文的报文首部由状态行、首部字段和其他组成。状态行由协议版本、状态码、 用以解释状态码的原因短语组成

其他 可能包含 HTTP 的 RFC 里未定义的首部(Cookie 等)。


HTTP 报文的结构如下图所示:

image-20221128185223348.png


请求报文及响应报文的结构如下图所示:

image-20221128185315110.png

image-20221128185517028.png

请求方法

请求方法是请求访问服务器的类型。

请求方法的作用是:告知服务器端,请求的意图。

  • GET : 获取资源
  • POST: 传输资源实体的主体(entity body)
  • PUT: 传输文件
  • DELETE: 删除文件
  • HEAD: 获得报文首部

HEAD 方法和 GET 方法一样, 只是HEAD 方法的响应不返回报文主体部分。HEAD 方法用于确认 URI 的有效性及资源更新的日期时间等。

状态码 & 原因短语

响应报文的状态码用来表示客户端发送的 HTTP 请求的处理结果、 标记服务器端的处理是否正常、 通知客户端出现的错误等。

状态码以 3 位数字组成。数字中的第一位指定了响应类别,后两位无分类。响应类别有以下 5 种。

  • 1XX:Informational(信息性状态码) 通知客户端,接收的请求正在处理
  • 2XX Success(成功状态码) 通知客户端,请求被正常处理完毕
  • 3XX Redirection(重定向状态码) 通知客户端,需要进行附加操作
  • 4XX Client Error(客户端错误状态码) 通知客户端,服务器无法处理请求
  • 5XX Server Error(服务器错误状态码) 通知客户端,服务器处理请求出错

2XX Success(成功状态码) 通知客户端,请求被正常处理完毕

  • 200 OK:该状态码代表服务器接收的请求已成功处理。
  • 204 No Content:该状态码代表服务器接收的请求已成功处理, 但在返回的响应报文中不含报文主体部分。

3XX Redirection(重定向状态码) 通知客户端,需要进行附加操作。表明浏览器需要执行某些特殊的处理以正确处理请求

  • 301 Moved Permanently:永久性重定向。 该状态码表示请求的资源已被分配了新的 URI,希望用户以后使用新的 URI 访问,新的 URI 在 Location 响应首部字段中指定。
  • 302 Found:临时性重定向。 该状态码表示请求的资源已被分配了新的 URI,希望用户本次使用新的 URI 访问,新的 URI 在 Location 响应首部字段中指定。

4XX Client Error(客户端错误状态码) 通知客户端,服务器无法处理请求

  • 400 Bad Request:该状态码表示请求报文中存在语法错误。 当错误发生时, 需修改请求的内容后再次发送请求。
  • 403 Forbidden:该状态码表明对请求资源的访问被服务器拒绝了。 服务器端没有必要给出拒绝的详细理由, 但如果想作说明的话, 可以在报文主体部分
    对原因进行描述, 这样就能让用户看到了。
  • 404 Not Found:该状态码表明服务器上无法找到请求的资源。
  • 405 Method Not Allowed:该状态码表明服务器接收到了不支持的 HTTP 方法。当响应返回该状态码,同时响应也会返回 Allow 实体首部字段来通知客户端,服务器端能够支持 Request-URI 指定资源的所有 HTTP 方法。

5XX Server Error(服务器错误状态码) 服务器处理请求出错

  • 500 Internal Server Error:该状态码表明服务器端在执行请求时发生了错误。
  • 502 Bad Gateway:通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
  • 503 Service Unavailable:该状态码表明服务器暂时处于超负载或正在进行停机维护, 现在无法处理请求。 如果事先得知解除以上状况需要的时间, 最好写入 RetryAfter 首部字段再返回给客户端。

Cookie 技术

HTTP 是一种不保存状态的协议,即无状态(stateless) 协议,它不对之前发生过的请求和响应的状态进行管理。也就是说, 无法根据之前的状态进行本次的请求处理。如果我们要求必须登录认证才能访问资源,那么每次跳转新页面不是要再次登录,就是需要每次请求时在请求报文中附加参数来管理登录状态。于是引入
了 Cookie 技术。

Cookie 的工作机制是用户识别及状态管理。 Web 网站为了管理用户的状态会通过 Web 浏览器, 把一些数据临时写入用户的计算机内。 接着当用户访问该 Web 网站时, 可通过通信方式取回之前发放的 Cookie。Cookie 技术通过在请求和响应报文中写入 Cookie 信息来管理客户端的状态。

  • 客户端:客户端(Web 浏览器)会根据服务器端发送的响应报文内的 Set-Cookie 响应首部字段,保存 Cookie。当下次客户端再往该服务器发送请求时, 客户端会自动在请求报文中加入 Cookie 首部字段后再将请求报文发送出去。
  • 服务器端
    • 服务器端发现客户端发送过来的 Cookie 后, 会去检查究竟是从哪一个客户端发来的连接请求, 然后对比服务器上的记录, 最后得到之前的状态信息。
    • 如果服务器端发现客户端发送过来的请求报文中没有 Cookie 首部字段,那么服务器端会生成 Cookie 信息,在响应报文中加入 Set-Cookie 首部字段后,服务器端将响应报文发送给客户端。

参考资料

《图解HTTP》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
非常好,我可以通过PPT来介绍HTTP请求。请看下面的介绍。 PPT标题:HTTP请求 第一张PPT:HTTP请求概述 HTTP(Hypertext Transfer Protocol)是一种用于传输超媒体文档(例如 HTML 文件)的应用层协议,通常基于TCP/IP协议来传输数据。HTTP请求是客户端(例如浏览器)向服务器发送数据请求的过程。 第二张PPT:HTTP请求格式 HTTP请求由三部分组成:请求行、请求头和请求体。请求行包含请求方法、请求URL和HTTP协议版本;请求头包含一些请求的附加信息,例如请求头部字段、Cookie等;请求体包含实际要传输的数据。 第三张PPT:HTTP请求方法 HTTP定义了许多请求方法,常用的有GET、POST、PUT、DELETE等。GET方法用于请求获取资源,POST方法用于提交数据,PUT方法用于更新资源,DELETE方法用于删除资源。 第四张PPT:HTTP请求示例 下面是一个HTTP GET请求的示例: ``` GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Connection: keep-alive Upgrade-Insecure-Requests: 1 ``` 第五张PPT:HTTP请求流程 HTTP请求流程如下: 1. 浏览器解析URL,获取服务器地址和端口号。 2. 浏览器向服务器发送TCP连接请求。 3. 服务器返回TCP连接应答。 4. 浏览器向服务器发送HTTP请求。 5. 服务器解析HTTP请求,返回HTTP响应。 6. 浏览器解析HTTP响应,渲染页面。 以上就是HTTP请求的介绍,谢谢观看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真正的飞鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值