MDN-HTTP

参考资料

文章目录

    • HTTP简介
    • HTTP 和 HTTPS
    • HTTP消息
    • 典型的HTTP会话
    • HTTP响应状态
    • HTTP安全
    • HTTP Cookie
    • 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压缩时,需要根据具体情况选择合适的压缩算法,并确保压缩后的数据不影响内容的可读性和质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/30131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

银河麒麟高级操作系统V10助力联通云建设打出组合拳

联通云基于“双引擎基座一云多芯”为不同行业场景提供可靠、高质量的应用上云服务。在核心代码进行了全面把控&#xff0c;定制多架构芯片应用适配模版&#xff0c;开发了计算、存储、网络、中间件等组件&#xff0c;全面适配自主化服务器和操作系统&#xff0c;提供云服务器、…

关于docker 在ubuntu16.04 上的安装

https://www.sohu.com/a/708313241_121368355 参考教程&#xff1a; https://www.runoob.com/docker/docker-image-usage.html 镜像网址 https://hub.docker.com/

用ClickHouse 文件表引擎快速查询分析文件数据

有时我们需要快速查询分析文件数据&#xff0c;正常流程需要在数据库中创建表&#xff0c;然后利用工具或编码导入数据&#xff0c;这时才能在数据库中查询分析。利用ClickHouse文件引擎可以快速查询文件数据。本文首先介绍ClickHouse文件引擎&#xff0c;然后介绍如何快速实现…

Android10.1接上usb摄像头重启设备无声音

一、问题描述 接上客户的usb摄像头,插上喇叭,重启设备,有时候有声音,有时候没有 二、问题原因 原因:插上usb设卡后又两个声卡,而重启后哪个声卡的节点先生成不确定,而hal层中只是打开第一个节点,而usb声卡是没有播放功能的,所以节点中没有播放节点,所…

TypeScript

背景&#xff1a; JS 的类型系统存在“先天缺陷”弱类型&#xff0c;JS 代码中绝大部分错误都是类型错误&#xff08;Uncaught TypeError&#xff09; 开发的时候&#xff0c;定义的变量本应该就有类型 这些经常出现的错误&#xff0c;导致了在使用 JS 进行项目开发时&#xf…

Python中的dataclass:简化数据类的创建

Python中的dataclass是一个装饰器&#xff0c;用于自动添加一些常见的方法&#xff0c;如构造函数、__repr__、__eq__等。它简化了创建数据类的过程&#xff0c;减少了样板代码&#xff0c;提高了代码的可读性和可维护性。有点类似java里面的Java Bean。 让我们看一个简单的例子…

任意子数组和的绝对值的最大值【力扣1749】

一、解题思路 设n表示数组的长度&#xff0c;Min[i]是以nums[i]为开头组成的任意连续子数组中的和最小值&#xff08;若所有子数组的和都大于0&#xff0c;则Min[i]设为0。也就是说丢弃所有子数组&#xff09;&#xff1b;Max[i]是以nums[i]为开头组成的任意连续子数组中的和最…

Cortex-M3的双堆栈MSP和PSP(学习)

M3的栈&#xff0c;先进后出。 是局部变量内存的开销&#xff0c;函数的调用都离不开栈。 Cortex-M3内核使用了双堆栈&#xff0c;即MSP和PSP。 MSP&#xff1a;Main_Stack_Pointer&#xff0c;即主栈。 PSP&#xff1a;Process_Stack_Pointer&#xff0c;即任务栈。 SP&#…

【图像去噪的扩散滤波】基于线性扩散滤波、边缘增强线性和非线性各向异性滤波的图像去噪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Linux配置QT Creator环境:ubuntu中安装QT Creator环境

一、前景 目前市面上很多公司使用QT Creator进行界面开发&#xff0c;基本都会选择在Linux环境进行&#xff0c;优点不仅是市场所需&#xff0c;更是方便后期代码的移植&#xff0c;相较于Windows系统&#xff0c;Linux系统移植性非常好。故此篇文章&#xff0c;介绍如何在Linu…

CentOS 7迁移Anolis OS 8

背景&#xff1a;生产环境客户要求操作系统国产化 操作系统&#xff1a;Centos7.9 内核&#xff1a;5.4.108 服务器可以联网&#xff0c;进行在线迁移&#xff1a; # 下载迁移工具软件源 wget https://mirrors.openanolis.cn/anolis/migration/anolis-migration.repo -O /etc/y…

JAVA获取视频音频时长 文件大小 MultipartFileUtil和file转换

java 获取视频时长_java获取视频时长_似夜晓星辰的博客-CSDN博客 <dependency><groupId>ws.schild</groupId><artifactId>jave-all-deps</artifactId><version>2.5.1</version></dependency>Slf4j public class VideoTimeUtil…

基于Tars高并发IM系统的设计与实现-实战篇5

基于Tars高并发IM系统的设计与实现-实战篇5 群聊服务 GroupChatServer 群聊服务既可以接受来自BrokerServer的用户请求&#xff0c;也需要接收来自其他服务的RPC请求;所以本服务提供两套RPC接口&#xff1a;通用RPC接口和专用RPC接口。 通用RPC接口 通用RPC接口主要处理如下…

编写第一个 React Native 程序

React Native 目录 使用React Native CLI命令创建的目录如下图所示&#xff1a; 重要目录说明 目录说明__tests__存放测试用例的目录.bundle / config配置文件&#xff08;一般不会用到&#xff09;android 和 IOS 文件夹这两个文件夹主要是存放安卓和 ios 相关的配置文件和…

380. O(1) 时间插入、删除和获取随机元素 -------------Map类型在O(1)复杂度内实现插入删除

380. O(1 时间插入、删除和获取随机元素 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 380. O(1) 时间插入、删除和获取随机元素 https://leetcode.cn/problems/insert-delete-getrandom-o1/description/ 完成…

【Spring】如果你需要使用重试机制,请使用Spring官方的Spring Retry

文章目录 前言Spring Retry的基本使用第一步&#xff0c;引入Spring Retry的jar包第二步&#xff0c;构建一个RetryTemplate类第三步&#xff0c;使用RETRY_TEMPLATE注意事项 拓展方法降级操作重试策略&#xff1a;时间策略重试策略&#xff1a;指定异常策略 前言 Spring Retr…

SpringBootWeb案例-准备工作

目录 前言 准备工作 需求&环境搭建 需求 环境搭建 开发规范 Restful开发规范 统一的响应结果 开发流程 前言 根据过往的文章可以知道目前我已经学习完了前端、后端、数据库的基础知识&#xff0c;接下来通过一个基于SpringBoot工程开发的web项目案例。 准备工作 …

IDEA快捷键200+(按组合分类)

目录 Alt Ctrl Shift AltShift CtrlShift CtrlAlt 其他 Alt 快捷键中文描述英文描述Alt0Commit窗口Alt1Project窗口Alt2Favourite窗口Alt3Find窗口Alt4Run窗口Alt5Debug窗口Alt6Problem窗口Alt7File structureAlt8Services窗口Alt9Git窗口AltF1Select current file or symbol…

视频监控汇聚EasyCVR平台WebRTC流地址无法播放的原因排查

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…

算法练习工程1.3

* 问题标题&#xff1a;移除元素 * 题意说明&#xff1a; * 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 * 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入…