MDN-HTTP

参考资料

HTTP简介

HTTP(Hypertext Transfer Protocol)是一种用于在计算机网络中传输超文本和其他资源的应用层协议。他是互联网的基础协议之一,由于客户端(如Web浏览器)和服务器之间的通讯。
HTTP是一种无状态协议,每个请求和响应之间没有关联,服务器也不会保留客户端的状态信息。

HTTP的工作原理:
1、客户端发送HTTP请求到服务器,请求中包含请求方法(如GET、POST、PUT、DELETE等)和请求的URL。
2、服务器接收到请求后,根据URL找到对应的资源,并生成HTTP响应。
3、服务器将HTTP响应发送回客户端,响应中包含状态码(是否成功)、响应头(包含响应的元信息)、响应体(包含实际的数据)等信息。
4、客户端接收到HTTP响应后,根据状态码和响应体来处理响应数据,比如显示网页内容、下载文件等。

HTTP的主要特点:
1、简单:HTTP使用简单的请求-响应模型,请求由客户端发起,服务器进行响应,没有复杂的连接和断开过程。
2、灵活:HTTP支持不同的请求方法,如GET用于获取资源,POST用于提交数据,PUT用于更新资源,DELETE用于删除资源等。
3、无状态:HTTP是无状态协议,每个请求和响应之间没有关联,服务器不会保存客户端的状态信息,每次请求都是独立的。
4、可扩展:HTTP支持通过HTTP头部传递自定义的信息,使得协议可以根据需要进行扩展。

HTTP 和 HTTPS

1、安全性:
HTTP:数据在传输过程中是明文的,容易被攻击者窃听、篡改或伪造,不具备安全性。
HTTPS:通过使用SSL/TLS加密协议对传输的数据进行加密,确保数据在传输过程中是安全的,难以被窃听或篡改。

2、协议:
HTTP:使用标准的HTTP协议进行数据传输。
HTTPS:在HTTP的基础上加入了SSL/TLS协议,形成了安全的HTTPS协议。

3、端口:
HTTP:默认使用80端口进行通信。
HTTPS:默认使用443端口进行通信。

4、证书:
HTTP:不需要证书。
HTTPS:为了建立安全连接,服务器需要使用SSL证书,该证书由可信的第三方机构颁发,用于验证服务器的身份。

5、使用场景:
HTTP:适用于不涉及敏感信息传输的场景,如一般的网页浏览、信息查询等
HTTPS:适用于涉及敏感信息传输的场景,如网上支付、登录账户等。

总的来说,HTTP适用于一般的数据传输场景,而HTTPS则更安全,适用于需要保护隐私和敏感信息的数据传输场景。随着网络安全意识的提高,越来越多的网站和应用都采用HTTPS协议来保护用户的数据安全。

HTTP消息

HTTP消息是在HTTP协议中用于在客户端和服务器之间传递数据的格式。HTTP消息包括两种类型:请求消息和响应消息。

1、HTTP请求消息:
HTTP请求消息是客户端向服务器发送的请求,用于请求特定的资源或执行特定的操作。HTTP请求消息由以下部分组成:

  • 请求行:包含请求方法、请求的URL和HTTP协议版本。
  • 请求头部:包含请求的元信息,如User-Agent(客户端类型)、Accept(可接受的数据类型)、Cookie(客户端的Cookie信息)等。
  • 请求体:对于POST请求等包含数据的请求,请求体中会包含请求的数据。

一个示例的HTTP请求消息如下:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

2、HTTP响应消息:
HTTP响应消息是服务器向客户端返回的响应,用于包含请求的结果或所请求的资源。HTTP响应消息由以下部分组成:

  • 状态行:包含响应状态码和状态描述。
  • 响应头部:包含响应的元信息,如Content-Type(响应的数据类型)、Content-Length(响应的数据长度)、Set-Cookie(服务器设置的Cookie信息)等。
  • 响应体:包含实际的响应数据。

一个示例的HTTP响应消息如下:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 1234

<!DOCTYPE html>
<html>
<head>
<title>Example Page</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>

HTTP消息的格式和内容可以根据不同的请求和响应进行调整,但遵循了HTTP协议规定的基本结构和字段。HTTP消息的正确解析和处理是客户端和服务器之间进行有效通信的基础。

典型的HTTP会话

典型的HTTP会话是客户端(通常是浏览器)与服务器之间进行数据交换的过程。这个过程通常涉及HTTP请求和HTTP响应的交互。以下是一个典型的HTTP会话的简单示例:

1、客户端发起HTTP请求:
客户端(浏览器)向服务器发送HTTP请求,请求特定的资源或执行特定的操作。例如,客户端可能要求获取一个网页、图片、视频或其他资源。

2、服务器处理HTTP请求:
服务器接收到客户端发送的HTTP请求,并根据请求的内容进行相应的处理。服务器可能会查询数据库、读取文件,或执行其他必要的操作,以生成HTTP响应。

3、服务器发送HTTP响应:
服务器生成HTTP响应,并将响应发送回客户端。响应包含所请求的资源或执行结果。响应的内容可以是HTML网页、图片文件、JSON数据等,具体取决于请求的内容和服务器的处理结果。

4、客户端接收HTTP响应:
客户端(浏览器)接收到服务器发送的HTTP响应,并对响应进行解析和处理。如果响应包含HTML网页,浏览器会解析HTML并在界面上显示网页内容;如果响应是图片文件,浏览器会显示图片。

5、可能的继续:
在一次HTTP会话中,客户端和服务器可能会进行多次请求和响应的交互。例如,在浏览网页时,浏览器可能会下载多个资源,如HTML、CSS、JavaScript、图片等,每个资源都需要发起一次HTTP请求,并接收相应的HTTP响应。

6、会话结束:
一次HTTP会话通常以客户端接收到最后一个HTTP响应结束,但在实际应用中,HTTP会话的结束可能会有其他复杂的情况,如长连接、会话过期等。

需要注意的是,HTTP是一种无状态协议,每个请求和响应都是独立的,服务器不会记住之前的请求和响应。为了实现状态保持,如登录状态等,通常需要使用Cookie或其他技术来维护会话信息。

HTTP响应状态

HTTP响应状态是服务器对客户端发起的HTTP请求做出的回应,它通过一个三位数字的状态码来表示。HTTP状态码分为五个类别,每个类别有不同的意义,常见的HTTP响应状态码包括:

1、信息性状态码(1xx):表示请求已被接收,继续处理。
100 Continue:服务器已接收到请求头,客户端应继续发送请求体。
101 Switching Protocols:客户端要求服务器切换协议,服务器已同意切换。

2、成功状态码(2xx):表示请求已成功被服务器接收、理解、并处理。
200 OK:请求成功,服务器返回所请求的数据。
201 Created:请求成功,服务器已创建新的资源。
204 No Content:请求成功,服务器处理成功,但没有返回内容。

3、重定向状态码(3xx):表示需要客户端进一步操作来完成请求。
301 Moved Permanently:请求的资源被永久移动到新的URL。
302 Found:请求的资源临时从不同的URL获取。
304 Not Modified:客户端缓存有效,服务器资源未修改,不返回资源内容。

4、客户端错误状态码(4xx):表示客户端发起的请求有误。
400 Bad Request:请求无效,服务器无法理解。
401 Unauthorized:请求需要用户认证或登录。
403 Forbidden:服务器理解请求,但拒绝执行。
404 Not Found:请求的资源不存在。

5、服务器错误状态码(5xx):表示服务器在处理请求时发生错误。
500 Internal Server Error:服务器遇到错误,无法完成请求。
502 Bad Gateway:作为代理或网关的服务器从上游服务器收到无效响应。
503 Service Unavailable:服务器暂时无法处理请求,通常是因为维护或过载。

这些HTTP状态码提供了对请求处理情况的描述,客户端通过解析响应中的状态码来了解服务器对请求的处理结果。根据不同的状态码,客户端可以做出相应的处理,例如重新请求、显示错误信息等。

HTTP安全

HTTP安全是指在HTTP通信过程中保护数据和用户隐私的一系列措施。由于HTTP协议本身是明文传输的,数据在传输过程中容易被拦截和窃取,因此需要采取一些安全措施来确保通信的安全性。

以下是一些常见的HTTP安全措施:

  1. HTTPS:使用HTTPS协议替代HTTP,通过SSL/TLS加密通信,确保数据在传输过程中被加密,防止中间人攻击和窃听。
  2. SSL/TLS:使用SSL(Secure Sockets Layer)或TLS(Transport Layer
    Security)协议加密通信,保护数据的完整性和机密性。
  3. 数字证书:服务器使用数字证书来验证自己的身份,确保通信的对端是可信的,防止中间人攻击。
  4. 密码保护:对于需要用户认证的资源或服务,要求用户输入用户名和密码进行身份验证,确保只有合法用户才能访问。
  5. 跨站请求伪造(CSRF)防护:防止恶意网站利用用户浏览器的身份发送请求,通过添加CSRF令牌或验证HTTP
    Referer来防范CSRF攻击。
  6. 跨站脚本攻击(XSS)防护:对输入的数据进行过滤和转义,避免恶意脚本注入到网页中,防止XSS攻击。
  7. 点击劫持防护:使用X-Frame-Options头部或Content Security
    Policy(CSP)来阻止网页被嵌入到iframe中,防止点击劫持攻击。
  8. HTTP安全头部:设置安全头部,如X-XSS-Protection、X-Content-Type-Options、Strict-Transport-Security等,增强浏览器的安全性。
  9. 安全认证:使用OAuth等安全认证机制,控制对敏感资源的访问权限。

通过采取上述HTTP安全措施,可以提高HTTP通信的安全性,保护用户的数据和隐私,防止常见的网络攻击。

HTTP Cookie

HTTP Cookie(简称Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据。一种用于在客户端(通常是Web浏览器)存储有关用户和网站之间状态信息的小型数据片段。它由服务器在HTTP响应中设置,并在随后的HTTP请求中通过HTTP头部中的Cookie字段发送回服务器。
Cookie通常用于记录用户的登录状态、用户偏好设置、购物车内容等信息,以便在用户不断访问同一网站时保持状态和个性化体验。

Cookie主要用于以下三个方面:

  • 会话状态管理:用户登录状态、购物车、游戏分数、其他需要记录的信息
  • 个性化设置:用户自定义设置、主题和其他设置
  • 浏览器行为跟踪:跟踪分析用户行为

Cookie是一种无状态协议的解决方案。在HTTP协议中,每个请求都是独立的,服务器不能知道当前请求和之前请求之间的关系。使用Cookie可以实现状态管理,将一些数据存储在客户端,使得服务器能够跟踪用户的状态。

每个Cookie都包含一个名称、一个值以及一些可选的属性。Cookie的名称和值都是字符串类型。服务器通过Set-Cookie HTTP头部将Cookie发送给客户端,客户端会将Cookie保存在浏览器中。以后,每次请求发送到同一服务器时,浏览器会将相应的Cookie信息附加到请求的Cookie字段中。

Cookie有一些常用的属性,包括:

  1. 过期时间:指定Cookie的有效期,可以是一个具体的日期时间或一个持续时间。过期时间之后,Cookie将会过期,不再被浏览器发送。
  2. 域:指定Cookie可用于哪个域名及其子域名。默认情况下,Cookie仅在设置它的域名下有效。
  3. 路径:指定Cookie的有效路径,控制哪些URL能够发送Cookie。
  4. 安全标志:如果设置了安全标志,Cookie只会在通过HTTPS加密协议发送给服务器。
  5. HttpOnly标志:如果设置了HttpOnly标志,Cookie将无法通过JavaScript脚本访问,从而增加Cookie的安全性。

Cookie的使用有助于实现很多有用的功能,但也需要注意一些安全问题。由于Cookie保存在客户端,可能会被篡改或盗用,因此在设置Cookie时应注意保护用户隐私和数据安全。为了增强Cookie的安全性,可以使用HTTPS协议、设置HttpOnly标志,以及对敏感信息进行加密处理。

HTTP压缩

HTTP压缩是一种通过减小HTTP响应的大小来提高网页加载速度和减少网络流量的技术。
当客户端(通常是Web浏览器)向服务器发起HTTP请求时,可以在请求头部中加入"Accept-Encoding"字段,告知服务器支持的压缩算法。如果服务器支持压缩,它将在HTTP响应头部中包含"Content-Encoding"字段,指示响应内容采用了哪种压缩算法。

用于文件的压缩算法可以大致分为两类:

  • 无损压缩。
    在压缩与解压缩的循环期间,不会对要恢复的数据进行修改。复原后的数据与原始数据是一致的(比特与比特之间一一对应)。对于图片文件来说,gif 或者 png 格式的文件就是采用了无损压缩算法。

  • 有损压缩。
    在压缩与解压缩的循环期间,会对原始数据进行修改,但是会(希望)以用户无法觉察的方式进行。网络上的视频文件通常采用有损压缩算法,jpeg 格式的图片也是有损压缩。

注意的是,并非所有类型的数据都适合进行压缩。例如,对于已经是压缩格式的图片或视频文件,再进行压缩可能会导致质量损失而得不偿失。因此,在使用HTTP压缩时,需要根据具体情况选择合适的压缩算法,并确保压缩后的数据不影响内容的可读性和质量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

淡水瑜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值