[计算机网络] HTTP/HTTPS
一. HTTP/HTTPS简介
1.1 HTTP
HTTP(超文本传输协议,Hypertext Transfer Protocol)是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。HTTP 工作在 TCP/IP 模型之上,通常使用端口 80。
HTTP的工作过程:
- 客户端发起请求
- 服务器处理请求
- 服务端返回响应
- 客户端渲染页面
HTTP三点注意事项:
- HTTP是无连接的, 每次只处理一次请求, 即服务器处理完客户端的连接, 并接收客户端的回应后, 即断开连接, 这种方式可以节省传输时间.
- HTTP是媒体独立的, 即只要服务端和客户端知道需要传输的数据, 任何类型的数据都可以通过HTTP传输, 客户端和服务端指定合适的MIME-type.
- HTTP是无状态的, 无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就较快。
1.2 HTTPS
HTTPS(超文本传输安全协议,Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,它在 HTTP 下增加了 SSL/TLS 协议,提供了数据加密、完整性校验和身份验证。HTTPS 通常使用端口 443。
二. HTTP/HTTPS请求
使用 fiddler 来捕获B站的请求
可以发现, HTTP请求由四部分构成:
- 首行
- 请求头
- 空行
- 主体
接下来详细的介绍一下各个部分.
2.1 首行
首行由 请求方式 + URL + HTTP版本号 组成
2.2 请求头
Host: 服务器域名.
Connection: 连接管理策略, keep-alive表示希望在完成当前请求后保持连接. 以便复用同一个TCP连接发送数据
Content-Length: 请求体的长度, 单位是字节.
sec-zh-ua-platform:客户端的操作系统平台
User-Agent:客户端的浏览器和操作系统的信息
Accept: 客户端能够处理的内容类型, 'application/json’表示客户端希望服务器返回JSON格式的数据.
sec-ch-ua: 客户端浏览器的用户代理品牌和版本信息
Content-Type: 请求体的媒体类型, 'application/json’表示请求体是JSON格式的数据.
sec-ch-ua-mobile: 客户端是否为移动设备. '?0’表示不是移动设备.
Origin: 请求的源, 即发起请求的页面的URL.
Sec-Fetch-Site:请求的站点上下文, 'same-site’表示请求来自同一站点
Sec-Fetch-Mode: 请求的模式, cors表示跨源资源共享请求
Sec-Fetch-Dest:请求的目的地, empty表示没有指定目的地.
Referer: 从哪个URL跳转来的
Accept-Encoding: 客户端能够处理的内容编码.这里列出了客户端支持的压缩模式, gzip br…
Accept-Language: 客户端能够理解的语言
Cookie: 包含客户端存储的cookie信息, 用于会话管理, 用户跟踪或个性化设计.
2.3 空行
请求头和请求体之间的空行. 标志着请求头的结束.
2.4 请求体
请求体包含要发送给服务器的数据.
三. HTTP/HTTPS请求方法
3.1 请求方法
- GET 从服务器获取资源. 例如: 从服务器获取图片, 视频等.
- POST 向服务器发送数据来创建新资源. 例如: 表单提交, 上传文件. 发送数据包含在请求体中.
- PUT 向服务器发送数据来更新现有资源. 如果资源不存在,则创建新的资源。与 POST 不同,PUT 通常是幂等的,即多次执行相同的 PUT 请求不会产生不同的结果。
- DELETE 删除服务器中的资源. 请求中包含要删除的资源标识符.
- PATCH 对资源进行部分修改. 与PUT类似.
- HEAD 类似于GET但服务器只返回响应的头部,不返回实际数据。用于检查资源的元数据(例如,检查资源是否存在,查看响应的头部信息)。
- OPTIONS 返回服务器支持的请求方法. 用于检查服务器支持哪些请求方法,通常用于跨域资源共享(CORS)的预检请求。
- TRACE 回显服务器收到的请求, 主要用于诊断. 客户端可以查看请求在服务器中的处理路径.
- CONNECT 建立一个到服务器的隧道,通常用于 HTTPS 连接。客户端可以通过该隧道发送加密的数据。
3.2 各个HTTP版本
各个HTTP版本定义的请求方法.
- HTTP/1.0
- GET
- POST
- HEAD
- HTTP/1.1
- GET
- POST
- HEAD
- PUT
- DELETE
- OPTIONS
- TRACE
- CONNECT
- HTTP/2
- HTTP/2 基本上沿用了 HTTP/1.1 的方法,但对协议进行了优化,提高了传输效率和速度。HTTP/2 也引入了新的特性,如多路复用、头部压缩和服务器推送等。
- HTTP/3
- HTTP/3 基于 QUIC 协议实现,继续使用 HTTP/2 的方法。HTTP/3 主要改进了传输层,使用 UDP 代替 TCP 以提高传输速度和可靠性。
3.3 GET和POST的区别(面试常考)
-
功能上: GET一般用于从服务器上获取资源, POST则用于更新服务器中的资源.:
-
安全性: GET是不安全的, 因为GET请求提交的数据(参数)将明文出现在URL上(请求头), 可能会泄露隐私; POST是安全的, 因为POST请求提交的数据(参数)被包装在请求体中.
-
数据量: GET传输的数据量少, 因为受URL长度的限制;POST传输的数据量大, 因为传输的数据被包装在请求体中. 因此, 上传文件时使用POST.
四. HTTP/HTTPS响应
捕获 B站 的响应.
响应也由四部分组成:
- 首行
- 响应头
- 空行
- 响应体
详细介绍.
4.1 首行
响应的首行由三部分组成.
HTTP版本号 + 状态码 + 状态码的描述性文本.
4.2 响应头
这次重点认识一些.
Date: 响应生成的日期和时间.
Content-Type: 响应体的媒体类型.
Content-Length: 响应体的长度, 单位为字节.
Connection: 连接管理策略. keep-alive 表示服务器希望保持连接.
Server: 指定服务器软件的信息.
4.3 空行
响应头和响应体之间的空行. 标志着响应头的结束.
4.4 响应体
{“code”:0} 是一个JSON格式的响应体,通常用于API(应用程序编程接口)调用的结果。在这种情况下,它表示请求已成功处理,并且服务器返回了一个状态码 0,这通常意味着没有错误发生,请求执行成功。
五. 状态码
状态码表示客户端请求的返回结果.
5.1 状态码的分类
状态 | 描述 |
---|---|
1XX | 指示信息-表示请求已经被接受, 正在处理 |
2XX | 成功-表示请求已被成功接收, 理解, 接受 |
3XX | 重定向-要完成请求必须进行更进一步的操作 |
4XX | 客户端错误-请求有语法错误或请求无法实现 |
5XX | 服务器端错误-服务器未能实现合法的请求 |
5.2 常见状态码
常用状态码:
200: 请求被正常处理
204: 请求被受理但没有资源可以返回
301: 永久性重定向
302: 临时重定向
304: 已缓存
400: 请求报文语法有误,服务器无法识别
403: 请求的对应资源禁止被访问
404: 服务器无法找到对应资源
500: 服务器内部错误
503: 服务器正忙
以上这些是HTTP/HTTPS的基础知识.
相关文章:
[计算机网络] HTTP/HTTPS
一. HTTP/HTTPS简介 1.1 HTTP HTTP(超文本传输协议,Hypertext Transfer Protocol)是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。HTTP 工作在 TCP/IP 模型之上,通常使用端口 …...
运动模糊效果
1、运动模糊效果 运动模糊效果,是一种用于 模拟真实世界中快速移动物体产生的模糊现象 的图像处理技术,当一个物体以较高速度移动时,由于人眼或摄像机的曝光时间过长,该物体会在图像中留下模糊的运动轨迹。这种效果游戏、动画、电…...
扫二维码进小程序的指定页面
草料二维码解码器 微信开发者工具 获取二维码解码的参数->是否登陆->跳转 options.q onLoad: function (options) {// console.log("options",options.q)if (options && options.q) {// 解码二维码携带的链接信息let qrUrl decodeURIComponent(optio…...
uniapp的生命周期
在 UniApp 中,生命周期函数是指在组件(如页面、视图等)创建和销毁过程中会自动触发的一些函数。UniApp 提供了多种生命周期函数,帮助开发者在适当的时机进行相关的逻辑处理。 UniApp 的生命周期函数可以分为 页面生命周期 和 组件…...
vue3-生命周期钩子函数
在 Vue 3 中,**生命周期函数**是指在组件的不同阶段自动执行的一些特殊函数。这些函数就像组件的“生老病死”的各个阶段,你可以在不同阶段执行不同的操作。 生命周期的主要阶段: 1. **创建阶段**(组件还没有出现在页面上&#x…...
科技云报到:数智化转型风高浪急,天翼云如何助力产业踏浪而行?
科技云报到原创。 捷径消亡,破旧立新,是今年千行百业的共同底色。 穿越产业周期,用数字化的力量重塑企业经营与增长的逻辑,再次成为数字化技术应用的主旋律,也是下一阶段产业投资的重点。 随着数字化转型行至“深水区…...
利用 360 安全卫士极速版关闭电脑开机自启动软件教程
在使用电脑的过程中,过多的开机自启动软件会严重拖慢电脑的开机速度,影响我们的使用体验。本教程中简鹿办公将详细介绍如何使用 360 安全卫士极速版关闭电脑开机自启动软件,让您的电脑开机更加迅速流畅。 一、打开 360 安全卫士极速版 在电…...
调用大模型api 批量处理图像 保存到excel
最近需要调用大模型,并将结果保存到excel中,效果如下: 代码: import base64 from zhipuai import ZhipuAI import os import pandas as pd from openpyxl import Workbook from openpyxl.drawing.image import Image from io i…...
【Spring 全家桶】Spring MVC 快速入门,开始web 更好上手(上篇) , 万字解析, 建议收藏 ! ! !
本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…...
Redisson看门狗机制
redis分布式锁我们需要手动为锁设置超时过期时间,但是这个时间不好判断,如果太短,持有锁的客户端还在执行业务,锁就超时释放了;如果太长了,持有锁的客户端释放锁失败,则其他客户端一直没法获取锁…...
LeetCode279. 完全平方数(2024冬季每日一题 27)
给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 …...
HTML礼物圣诞树
系列文章 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心(简易版)7HTML粒子爱心8HTML蓝色动态爱心9HTML跳动的爱心(双心版)1…...
【JVM】JVM基础教程(二)
上一篇:【JVM】JVM基础教程(一)-CSDN博客 类加载器 什么是类加载器(ClassLoader) 是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术。 从这个定义可以得出结论:Java是允许开发者写点代码…...
Appium 安装问题汇总
好生气好生气,装了几天了, opencv4nodejs 和 mjpeg-consumer 就是装不了,气死我了不管了,等后面会装的时候再来完善,气死了气死了。 目录 前言 1、apkanalyzer.bat 2、opencv4nodejs 3、ffmpeg 4、mjpeg-consume…...
在网安中什么是白帽子
在网络安全领域,白帽子是指那些专门从事网络安全研究,帮助企业或个人发现并修复安全漏洞的专家。以下是对白帽子的详细解释: 一、定义与角色 白帽子是网络安全领域的术语,通常指那些具备专业技能和知识的网络安全专家。他们的工作…...
C++解析URL的方式
一、URL格式为http://192.168.80.166:6666/designResLib/test/test std::vector<CString> ThkCabRMaterialStaDlg::splitAddress(const CString& address) {std::vector<CString> result;CString remaining address;result.push_back(remaining.Left(remaini…...
【软件安全】软件安全设计规范,软件系统安全设计制度(Word原件)
1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 软件全面文档清单涵盖以下核心内容&a…...
基于ZooKeeper搭建Hadoop高可用集群
ZooKeeper搭建Hadoop高可用集群 在之前安装的Hadoop3.3.6集群中HDFS NameNode 和 YARN ResourceManager 都是单节点,集群不具有高可用性。 HDFS 高可用架构 HDFS 高可用架构主要组件: Active NameNode 和 Standby NameNode: 两台 NameNode…...
华硕主板不能开启
正常流程: [主機板]BIOS如何設置主機板整合圖形(內顯)和獨立顯示卡同時顯示輸出 | 官方支援 | ASUS 台灣 如果开启了CSR兼容性模式,在BIOS里面,就必须关掉,才能支持多显示器,如下图显示的标识才会出现。...
[C++]构造函数和析构函数
一、构造函数 1.构造函数的基本概念 1.对构造函数的理解: 构造函数是类的一种特殊成员函数,其主要功能是在创建对象时进行初始化操作。它的名字与类名相同,并且没有返回值类型(不能是void)。例如,对于一个…...
查询品牌涉及两张表(brand、brand_admin_mapping)
文章目录 1、BrandController2、AdminCommonService3、BrandApiService3、BrandCommonService4、BrandSqlService涉及的表SQL 查询逻辑参数处理执行查询完整 SQL 逻辑参数映射总结 SELECT * FROM brand_admin_mapping WHERE admin_id 252SELECT * FROM brand WHERE id 44SELE…...
CVPR和其他2024顶会论文阅读(资源整理【1】)
CVPR 2024论文阅读(资源整理【1】) 一、3d 重建与建模论文1-Deformable 3D Gaussians for High-Fidelity Monocular Dynamic Scene Reconstruction论文2- 4D Gaussian Splatting for Real-Time Dynamic Scene Rendering论文3-GaussianDreamer: Fast Generation from Text to …...
数据库表约束完全指南:提升数据完整性和准确性
数据库表约束完全指南:提升数据完整性和准确性 在数据库设计中,表约束是确保数据完整性和准确性的关键工具。本文将详细介绍各种类型的表约束及其使用方法,包括非空约束、唯一约束、主键约束、外键约束、默认值约束、检查约束以及自动递增约…...
保姆级教程用vite创建vue3项目并初始化添加PrimeVue UI踩坑实录
文章目录 一、什么是PrimeVue二、详细教程1.添加PrimeVue2.配置main.js3.添加自动引入4.配置vite.config.js5.创建测试页面 一、什么是PrimeVue PrimeVue 是一个用于 Vue.js 3.x 开发的一款高质量、广受欢迎的 Web UI 组件库。 官网地址:https://primevue.org/ 二、…...
数据库索引
以下是关于数据库索引的详细介绍,包括其概念、优点和缺点,并附带丰富的例子: 一、什么是数据库索引 数据库索引是一种数据结构,类似于书籍的目录,它能够帮助数据库管理系统(DBMS)迅速定位和访问…...
硬件选型规则
光源选型: 先用型号中带H的,没有的选标准的. 光源和光源控制器的搭配需要确保接口一致。 根据型号表中的最佳工作距离和相机的尺寸。 光源控制器选型: 首先选择海康风格系列光源控制器考虑与光源的接口匹配。功率应该满足接近光源功率。检查是否退市…...
linux 架构详解
Linux 是一种开源的操作系统内核,最初由 Linus Torvalds 于 1991 年创建。它是一个基于 Unix 的操作系统内核,用于构建完整的操作系统。Linux 架构是指 Linux 操作系统的内部结构和组成组件的工作方式。 整体架构 Linux系统通常被看作是一个层次化的结…...
Mybatis 学习 之 XML 手册
目录 单次执行单次新增单次更新单次删除 批量执行批量新增批量更新for 循环执行更新for 循环生成多条 sql,一次执行 批量删除 参数传递预处理方式 (OGNL表达式 #{})数据类型转换 直接替换 (EL表达式 ${}) 安全 单次执行 单次新增 <insert id"insert"…...
平面直角坐标系
图1 平面直角坐标系 横轴为x,竖轴为y,x、y的交点为O。 表示一个点经常表示为( x, y ),如图上的红点( 2, 3 )。 图2 点( 2, 3 )...
K8S对接ceph的RBD块存储
1 PG数量限制问题 1.1 原因分析 1.还是老样子,先创建存储池,在初始化为rbd。 [rootceph141~]# ceph osd pool create wenzhiyong-k8s 128 128 Error ERANGE: pg_num 128 size 3 for this pool would result in 295 cumulative PGs per OSD (2067 tot…...
使用 OpenCV 进行 Android 开发
在本节中,我们将创建一个简单的应用程序,它除了加载 OpenCV 之外什么都不做。在下一节中,我们将扩展它以支持相机。 除了这个说明,你还可以使用一些视频指南,例如这个 打开 Android Studio 并选择Empty Views Activi…...
ubuntu下 grep 如何过滤包括G或者T字符串
在 grep 中,你可以通过使用正则表达式来匹配包含 G 或者 T 的字符串。例如: 1. 过滤包括 G 或 T 的字符串: grep -E G|T filename -E 表示启用扩展正则表达式(也可以用 egrep)。G|T 表示匹配 G 或 T。 2. 不区分大…...
【C语言】整数每一位数字出现次数
提相信你是最棒哒!!! 文章目录 题目描述 题目代码 法一解析版C 法二解析版C 总结 题目描述 给出两个整数 M 和 N,求在序列[M, M 1, M 2,…, N - 1, N]中每一个数码出现了多少次。 输入格式 输入两个整数 M 和 N 。 输出格式…...
opencv Mat To Heif
高效率图像文件格式(英语:High Efficiency Image File Format, HEIF;也称高效图像文件格式)是一个用于单张图像或图像序列的文件格式。它由运动图像专家组(MPEG)开发,并在MPEG-H Part 12&#x…...
[GStreamer] gstbasesink 的 chain 函数
chain函数的定位: chain函数是上一个element到当前element的入口,chain函数处理完毕后,上一个函数的push_buffer 就得以返回。因此通常情况下 parent element 的核心逻辑都在 chain 函数里,再通过再 chain 函数里调用虚函数让 ch…...
评估大语言模型(LLM)在分子预测任务能够理解分子几何形状性能
摘要 论文地址:https://arxiv.org/pdf/2403.05075 近年来,机器学习模型在各个领域越来越受欢迎。学术界和工业界都投入了大量精力来提高机器学习的效率,以期实现人工通用智能(AGI)。其中,大规模语言模型&a…...
2024-12-04OpenCV视频处理基础
OpenCV视频处理基础 OpenCV的视频教学:https://www.bilibili.com/video/BV14P411D7MH 1-OpenCV视频捕获 在 OpenCV 中,cv2.VideoCapture() 是一个用于捕获视频流的类。它可以用来从摄像头捕获实时视频,或者从视频文件中读取帧。以下是如何使用…...
Springboot 2.7+解决跨域问题,到底是在SpringBoot中添加拦截器还是修改Nginx配置
文章目录 1摘要2 核心代码2.1 SpringBoot 全局跨域拦截器2.2 Nginx 配置跨域处理2.3 Nginx 和 SpringBoot 同时添加允许跨域处理会怎么样? 3 推荐参考资料 1摘要 跨域问题报错信息: Referrer Policy:strict-origin-when-cross-origin跨域问题是在前后端分离的情况…...
在Mac上安装多个Java版本
1、获取 Homebrew 的历史版本库 执行下面命令来获取 Homebrew 的历史版本库 brew tap homebrew/cask-versions2、安装java //java8 brew install java8 --cask//java11 brew install java11 --cask//java17 brew install --cask homebrew/cask-versions/microsoft-openjdk17…...
[小白系列]Ubuntu安装教程-安装prometheus和Grafana
Docker安装prometheus 拉取镜像 docker pull prom/prometheus 配置文件prometheus.yml 在/data/prometheus/建立prometheus.yml配置文件。(/data/prometheus/可根据自己需要调整) global:scrape_interval: 15s # By default, scrape targets ev…...
HTTP中GET和POST详细理解
HTTP中GET和POST 简单来说 GET 的语义是从服务器获取指定的资源,这个资源可以是静态的文本、页面、图片视频等。GET 请求的参数位置一般是写在 URL 中,URL 规定只能支持 ASCII,所以 GET 请求的参数只允许 ASCII 字符 ,而且浏览器…...
Vant UI Axure移动端元件库:提升移动端原型设计效率
UI框架的选择对于提升开发效率和用户体验至关重要。Vant UI,作为一款基于Vue.js的轻量、可靠的移动端组件库,自2017年开源以来,凭借其丰富的组件库、良好的性能以及广泛的兼容性,在移动端开发领域崭露头角,赢得了众多开…...
y3编辑器文档3:物体编辑器
文章目录 一、物体编辑器简介1.1 界面介绍1.2 复用(导入导出)1.3 收藏夹(项目资源管理)1.4 对象池二、单位2.1 数据设置2.2 表现设置2.3 单位势力和掉率设置2.4 技能添加和技能参数修改2.5 商店2.5.1 商店属性设置2.5.2 商店物品设置三、装饰物3.1 属性编辑3.2 碰撞体积四、…...
【ESP32】ESP-IDF开发 | DAC数模转换器+余弦波输出例程
1. 简介 ESP32上的数字模拟转换器 (DAC) 带有 2 个 8 位通道,因此可输出2路模拟信号。在低功耗模式下也可由 ULP 协处理器通过控制寄存器来实现完全控制。内部自带余弦波形生成器,可用于生成余弦波形/正弦波形,用户可调整频率、振幅、相位和直…...
java中的递归
大家好,今天我们来学习一下java中的递归,相信大家应该也对递归有一点了解吧,如果没有也没有关系,我们现在就来了解一下。 五、递归 自身中包含了自己,遇到的问题直接并不好解决,但是发现将原问题拆分成其子问题之后,子问题与原问…...
残差网络连接,使得输入与输出的尺寸一样
def forward(self, x):out self.layer1(x)out self.layer2(out)# 使用插值将输入x上采样至与layer2输出相同的尺寸x F.interpolate(x, size(out.size(2), out.size(3)), modebilinear, align_cornersFalse)# 确保x的通道数与out匹配x x[:, :out.size(1), :, :] # 选择前ou…...
SAP SD学习笔记18 - 投诉处理4 - 请求书订正依赖,投诉处理流程的总结
上一章讲了 Credit/Debit Memo依赖,Credit/Debit Memo。Credit Memo依赖 本质上是一张受注票;Credit Memo 本质上是一张请求票。 SAP SD学习笔记17 - 投诉处理3 - Credit/Debit Memo依赖,Credit/Debit Memo-CSDN博客 本章继续讲本图中的内容…...
记录下nginx接口代理配置问题
其中api和api1是前面定义的upstream,ip相同只是端口不同。 一开始/api1/直接 像api一样 proxy_pass http://api1这样是不行的,因为会代理到 后端的 /api1/...接口,而后端实际接口地址是 /api/..... 所以必须像上面写法才能将外网的 /api…...
flink-connector-mysql-cdc:01 mysql-cdc础配置代码演示
flink-connector-mysql-cdc: 01 mysql-cdc基础配置代码演示02 mysql-cdc高级扩展03 mysql-cdc常见问题汇总04 mysql-cdc-kafka生产级代码分享05 flink-kafka-doris生产级代码分享06 flink-kafka-hudi生产级代码分享 flink-cdc版本:3.2.0 flink版本&…...
001-Redis介绍
目录 一、Redis 简介 二、Redis 特性 三、Redis 下载安装 四、Redis 可视化管理界面工具 一、Redis 简介 1.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的 key-value 数据库。 2. 它在内存中存储数据,并提供了持久化功能,可以将数据保存到磁盘中,它是一种 NoS…...