前端基础知识之HTTP协议(一)

360 阅读10分钟

HTTP起源

HTTP起源于20世纪90年代初,由英国物理学家蒂姆·伯纳斯-李(Tim Berners-Lee)和他的团队在欧洲核子研究组织(CERN)开发出来。他们的目标是创建一种简单、通用的协议,使不同的计算机和系统可以互相通信交换信息
最初的HTTP版本是HTTP/0.9,它非常简单,只支持获取HTML文档,并且没有头部信息和请求方法。随着互联网的发展,HTTP逐渐演化并推出了更高版本,如HTTP/1.0HTTP/1.1HTTP/2
HTTP协议的广泛应用使得互联网的发展变得更加便捷和高效,它成为了访问网页发送电子邮件下载文件等各种互联网活动的基础

HTTP是什么?

全称:超文本传输协议(HyperText Transfer Protocol

功能:HTTP是一种用于在客户端服务器之间传输超文本的协议。它是互联网数据传输的基础,使得互联网上的网页浏览、文件传输等活动变得便捷和高效。

工作原理: 通过客户端和服务器之间的请求响应来传输信息。客户端发送HTTP请求给服务器,服务器接收到请求后,根据请求的内容做出相应的动作,并将结果以HTTP响应的形式返回给客户端。

HTTP报文

概念:用于HTTP协议交互的信息被称为HTTP报文。客户端的HTTP报文叫请求报文,服务端的HTTP报文叫响应报文

请求报文

HTTP请求报文由四个部分组成:请求行、请求头、空行、请求体。

  1. 请求行:请求行由请求方法字段URL字段HTTP协议版本字段3个字段组成,它们用空格分隔。比如 Post /form/login HTTP/1.1
  2. 请求头:由key: value值的方式构成,告诉服务器客户端需要哪些内容,什么类型。
  3. 空行:它的作用是通过一个空行,告诉服务器请求头部到此为止。
  4. 请求体:若方法字段是GET,则此项为空,没有数据。若方法字段是POST,则通常来说此处放置的就是要提交的数据

1.png

响应报文

HTTP响应报文也由四部分组成:状态行、响应头、空行、响应体。

  1. 响应行:响应行一般由协议版本状态码及其描述组成 比如 HTTP/1.1 200 OK
  2. 响应头:响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理待会它回送的数据。
  3. 空行:它的作用是通过一个空行,告诉服务器请求头部到此为止。
  4. 响应体:响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JSON就是JSON数据,如此之类。 2.png

请求方法

HTTP请求方法定义了客户端对服务器资源的操作方式。以下是常见的HTTP请求方法:

方法描述
GET用于从服务器获取资源,通常用于获取页面内容或数据。GET请求可以通过URL参数传递数据,但数据会明文显示在URL中。
POST用于向服务器提交数据,通常用于发送表单数据或上传文件等。POST请求将数据放在请求主体中,而不是URL参数中,因此更适合处理敏感信息。
PUT用于向服务器存储一个资源,可以替换现有资源或在指定位置创建新资源。PUT请求需要提供完整的资源表示,并将其放置在指定的URL位置。
DELETE用于从服务器删除指定的资源。DELETE请求会删除指定URL位置上的资源。
HEAD类似于GET请求,但只返回响应头部,不返回实际的响应主体。HEAD请求常用于获取资源的元数据或检查资源是否存在。
OPTIONS用于获取服务器支持的请求方法列表,也可以查询服务器的功能和配置选项。
PATCH用于部分更新服务器上的资源。PATCH请求包含要应用于资源的更改内容,而不是替换整个资源。

除了上述常见的HTTP请求方法,还有一些不太常见的方法,如TRACECONNECT等。这些方法在实际的前端开发中使用较少,更多地被用于特定的场景和协议扩展。
在前端开发中,通常使用GETPOST方法最为频繁。GET用于从服务器获取数据或页面内容,而POST则用于向服务器提交数据。使用适当的请求方法可以确保与服务器正确交互,并符合HTTP协议的规范。

HTTP状态码

概念:HTTP状态码是服务器在接收到客户端的请求后,返回给客户端的响应中的一个数字代码。这个状态码提供了关于请求处理结果的信息,帮助客户端了解请求的状态和如何进一步处理。

以下是常见的HTTP状态码、含义及其描述:

状态码含义描述
1xx信息性状态码表示请求已被接受,需要进一步处理。
100Continue服务器正在处理请求,客户端应继续发送剩余部分。
101Switching Protocols服务器已根据客户端的请求切换协议。
2xx成功状态码表示请求已成功接收、理解和处理。
200OK请求成功,并返回所请求的数据。
201Created请求已成功处理,并创建了新的资源。
204No Content请求成功处理,但没有返回任何内容。
3xx重定向状态码表示请求需要进一步处理以完成。
301Moved Permanently请求的资源已永久移动到新位置。
302Found请求的资源临时移动到不同的位置。
304Not Modified客户端缓存未过期,可以使用本地缓存的版本。
4xx客户端错误状态码表示客户端发送的请求有误或无法完成。
400Bad Request请求语法错误,服务器无法理解。
401Unauthorized请求需要身份验证。
404Not Found请求的资源不存在。
5xx服务器错误状态码表示服务器在处理请求时发生了错误。
500Internal Server Error服务器内部错误,无法完成请求。
503Service Unavailable服务器暂时无法处理请求,通常是由于维护或过载。

HTTP状态码提供了一种标准化的方式来指示请求的结果和状态。客户端可以根据不同的状态码采取适当的行动,例如重试请求、显示错误信息或导航到其他页面等。在前端开发中,对不同状态码的处理和适当的用户反馈非常重要,以提供更好的用户体验。

首部字段

概念:HTTP首部字段是包含在HTTP请求和响应中的元数据信息,用于传递关于消息的附加信息。

以下是一些常见的HTTP首部字段:

通用首部字段:

通用首部含义
Cache-Control指定缓存机制的指令
Connection指示是否需要持久连接
Date表示消息产生的日期和时间
Pragma向后兼容的HTTP/1.0缓存控制
Trailer列出了在分块传输编码的消息尾部包含的字段
Transfer-Encoding指定了对消息主体的传输编码方式
Upgrade指示客户端支持的其他协议

请求首部字段:

请求首部含义
Host指定被请求资源的主机名和端口号
User-Agent包含了发起请求的用户代理的信息
Accept指定能够接受的媒体类型
Content-Type指定请求或响应中的实体主体的媒体类型
Content-Length指定请求或响应中的实体主体的长度
Authorization提供用于进行身份验证的凭据
Referer包含了发送请求页面的URL

响应首部字段:

响应首部含义
Content-Type指定响应中实体主体的媒体类型
Content-Length指定响应中实体主体的长度
Server指示响应中的服务器软件信息
Last-Modified指定资源的最后修改时间
ETag指示对请求资源的特定版本的标识
Location用于重定向,指示新的资源位置

还有其他许多HTTP首部字段,它们用于传递不同类型的信息,如身份验证缓存控制压缩等。根据具体需求和场景,可以选择适当的首部字段来实现所需的功能和交互。了解和正确使用首部字段对于实现高效的HTTP通信非常重要。

GET和POST的区别

GET和POST是HTTP协议中常用的两种请求方法,它们有以下区别:

1. 数据位置:

  • GET请求的数据会直接附加在URL的查询字符串中,以键值对的形式出现在URL后面,例如:http://xxx.com/path?param1=value1&param2=value2。数据暴露在URL中,对于敏感信息不太适合。
  • POST请求的数据通过请求主体传输,并不会直接显示在URL中。数据被封装在请求主体中,相对安全一些。

2. 数据长度限制:

  • GET请求对URL的长度有限制,不同浏览器和服务器有不同的限制,通常在几千个字符左右。
  • POST请求没有对传输数据长度的限制,但服务器和网络环境可能会有限制。

3. 缓存:

  • GET请求可以被浏览器缓存,下次请求同样的URL时,浏览器可能直接从缓存获取响应结果,减少服务器请求。
  • POST请求默认不会被浏览器缓存,每次请求都会发送到服务器。

4. 安全性:

  • GET请求的参数暴露在URL中,容易被拦截、修改或泄露,因此不适合处理敏感信息。
  • POST请求的数据放在请求主体中,相对安全一些,适合传输敏感信息。

5. 幂等性:

  • GET请求是幂等的,即多次重复请求不会产生副作用,只读取数据,不改变服务器状态。
  • POST请求不是幂等的,多次重复请求可能会产生不同结果,可能改变服务器状态,如插入新数据。

6. 使用场景:

  • GET请求适合获取资源、查询数据,通过URL传递参数,对于无副作用的请求更为合适。
  • POST请求适合提交数据、发送表单、上传文件,对于修改服务器状态或有副作用的操作更为合适。

综上所述,GET和POST在数据位置、数据长度限制、缓存、安全性、幂等性和使用场景等方面存在差异。根据具体需求和情况,选择合适的请求方法来进行数据交互和处理。

小结

以上是我整理的一些前端所需的HTTP基础知识,如果对你有帮助的话不要忘记点赞收藏哦!

dz3.webp

未完待续......

下一篇:前端基础知识之HTTP协议与安全性(二)