当前位置: 首页 > news >正文

HTTP基本原理

目录

  • URL
    • 简单定义
    • 格式
  • HTTP和HTTPS
  • HTTP的请求过程。
  • 请求
  • 响应
  • 响应体
  • HTTP2.0
  • 总结

URL

简单定义

通过一个链接,使我们可以找到网络上的某个资源,这个链接就是URL。

格式

URL并不是随便写的,而是有固定的格式。基本的组成格式如下。
schme://[username:password] hostname[:port][/path][;paramaters][?query][#fragment]
中括号包含的内容并不是必须的。
scheme:协议,常用的协议有http,https,ftp等。
username:password:特定场合下需要用到用户名和密码。
hostname:主机地址,可以是域名或者IP地址。
port:端口。指服务器设定的端口,http默认的端口是80,https的端口是440.
path:网络资源在服务器中的特定地址。
paramters:参数,用来指定某个访问资源时的附加信息。但现在用的不多,基本上会和query混用。
query:参数,用来查询某个资源,当查询多个资源时,可以用&连接。
fragment:有两个作用,一个作用是作单页面路由,另一个作用是做html锚点。可以控制一个页面打开时,自动滚到某个特定的位置。

HTTP和HTTPS

http超文本传输协议,作用是把超文本数据从网络传输到本地浏览器。而https则是http的安全版,在http层加入ssl,简称https。https的基础就是SSL,他的作用主要有以下两种:
1.建立一个信息安全通道,保证数据传输的安全性。
2.确认网站的真实性,凡是使用了https协议的网站,可以用单机鼠标烂地址的锁头标志来查看网站之后的真实信息。

HTTP的请求过程。

就像我们平常直接在浏览器地址栏输入一个URL,则我们可以看到对应页面的内容。实际的过程就是浏览器向网站所在的服务器发送一个请求,网站服务器接收到请求后对其进行处理和解析,然后返回对应的响应,接着传回浏览器,浏览器再对其进行解析。

请求

请求由客户端发向服务器,分为四部分内容,请求方法,请求网址,请求头,请求体。
请求方法:常用的get,post,delete,put。
简单介绍以下get和post。
GET:get的请求参数包含在URL里面,数据可以在URL中看到,而post请求的url不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中。
GET请求的数据最多只有1024字节,POST方法没有限制。
请求网址:确定客户端想请求的资源。
请求头:说明服务器要使用的附加信息,常用的比如Cookie,Referer,User-Agent等。下面举一些简单的请求头信息。
Accept:指定客户端可以接受的哪些类型的信息。
Accept-Language:用于指定客户端接受的语言类型。
Accept-Encoding:用于客户端可接受的内容编码。
COOKIE:为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前对话,例如当我们登入进一个网站之后,即使我们刷新之后,还是会保留原来自己的登录状态。
Refer:用来标识是从哪个页面发过来的。
User-Agent:简称UA 这是一个特殊的字符串头,可以使服务器识别客户端使用的操作系统。版本,浏览器的相关信息。做爬虫时需要加入信息来伪装成浏览器,要不容易被识别出来。
Content-Type:也叫互联网媒体类型,或者MIME类型,在HTTP协议消息头中用来表示具体请求的媒体类型信息,例如text/html代表的是HTML格式。image/gif代表的是GIF图片,application/json代表JSON类型。
请求体:一般就是post请求中的表单数据。

响应

响应,即Response,有服务器返回给客户端,分为三个部分,响应状态码,响应头和响应体。
响应状态码,常用的有200代表服务器正常响应,404代表服务器未找到,500代表服务器内部错误。
响应头,包含了服务器对请求的应答信息,如Conten-type等。DATE:用于标识响应产生的时间,Content-Encoding:用于指定响应内容的编码。Sever:包含服务器的信息。Content-type:文档类型,指定返回的数据是什么类型。
Exipres:用于指定的响应的过期时间。

响应体

响应体的正文数据都存储在于响应体中。

HTTP2.0

HTTP2.0对HTTP进行了一些优化。二进制分帧层,将文本格式的数据修改为二进制格式。使得解析起来更加高效、同时将请求和响应数据分为更小的帧,并采用二进制编码。引入了几个新的概念。如帧:是数据通信的最小单位。比如一个请求被分为了请求头帧和请求体数据帧。数据流:一个虚拟通道,可以承载双向的消息,每一个流都有一个唯一的整数ID来标识。
消息:与逻辑请求或响应消息对应的完整的一系列帧。
多路复用:在之前的版本中,如果客户端想发起多个并行的请求用来提升性能,则必须使用多个TCP来连接,而且浏览器为了控制资源,还会对单个域名有6-8个请求的限制,但是在HTTP2.0中,由于有了进制分帧的加持,HTTP2.0不再用TCP连接的方式来实现多路并行,客户端和服务器将HTTP消息分解为互不依赖的帧,然后交错发送,最后再另一端组装起来,达到了并行交错的发多个请求,请求之间互不影响。提高现有网络容量的利用率,从而减少页面加载时间。
流控制:流控制是用来阻止发送方向接受方发送大量数据的机制,以免超出后者的需求能力。
服务端推送:服务器可以对一个客户端发送多个响应。除了最除的响应外,服务器可以向客户端推送额外的资源,而无需向客户端明确的请求。服务端可以主动推送,则客户端也有权选择拒绝,如果推送的资源已经被浏览器进行缓存,浏览器可以通过RST_STREAM帧来选择拒收。
另外主动推送也遵守同源策略,即服务器不能随便将第三方资源推给客户端,而必须是经过服务器和客户端双方确认才行,这样能保证一定的安全性。

总结

对HTTP的基本知识进行复习和梳理。

相关文章:

HTTP基本原理

目录URL简单定义格式HTTP和HTTPSHTTP的请求过程。请求响应响应体HTTP2.0总结URL 简单定义 通过一个链接,使我们可以找到网络上的某个资源,这个链接就是URL。 格式 URL并不是随便写的,而是有固定的格式。基本的组成格式如下。 schme://[us…...

【云原生】Kubernetes(k8s)最新版本详细保姆级安装教程

前言 Kubernetes简称k8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,k8s目标是让部署容器化的应用简单并且高效,k8s提供了应用部署,规划,更新,维护的一种机制。 本文是总结了在安…...

JVM - 类加载,连接和初始化

目录 类加载和类加载器 概述 类加载要完成的功能 加载类的方式 类加载器 类加载器的关系 类加载器说明 双亲委派模型 工作过程如下: 双亲委派模型说明: 破坏双亲委派模型: 类连接和初始化 类连接主要验证的内容 类连接中的解析…...

[carla]关于odometry坐标中的角度坐标系 以及 到地图的映射问题

1.获取车辆的Odometry原始信息 在carla中,通过订阅/carla/ego_vecle/odometry 可以查看车辆的全局位置信息,例如: > header: seq: 118872stamp: secs: 5946nsecs: 5720187frame_id: "map" child_frame_id: "ego_vehicle" pos…...

Python 正则表达式

正则表达式主要用来查找和匹配字符串的。 一、正在表达式基础 字符 描述 示例 TIY\ 示意特殊序列(也可用于转义特殊字符)如:空白字符 "\s" . 任何字符(换行符除外) "he..o" ^ 起始于 "^h…...

spark03-读取文件数据分区数量个数原理

代码val conf: SparkConf new SparkConf().setMaster("local").setAppName("wordcount")val sc: SparkContext new SparkContext(conf)val rdd: RDD[String] sc.textFile("datas/1.txt",2)rdd.saveAsTextFile("output")数据格式 &a…...

操作系统(day08)内存

存储单元 内存的几个基本概念 存储单元 内存地址从0开始,每个地址对应一个存储单元 存储单元大小根据计算机按照什么方式编址 按字节编址 则每个存储单元大小为一字节,即1B,即8个二进制位按字编址 看这个计算的字长是多少位,如…...

11- 聚类算法 (KMeans/DBSCAN/agg) (机器学习)

聚类算法 聚类算法和降维算法那都属于无监督算法。KMeans 是以一个值为中心, 然后所有其他点到该点距离最小值的累积和。 kmeans KMeans(n_clusters3) # n_clusters 分类数量 kmeans.fit(data.iloc[:,1:]) # 无监督,只需要给数据X就可以 DBSCAN 算法是…...

日日顺供应链|想要看清供应链发展趋势,先回答这三个问题

技术变革如何支撑供应链及管理服务的发展? 数字化与科技化开始承托供应链管理能力的升级与变革? 如何从客户需求的纬度反推供应链及管理服务的模式变革?在过去的三年中,我国的供应链企业经受了最为极端的挑战,但当下&a…...

5守护进程与线程

进程组 多个进程的集合,第一个进程就是组长,组长进程的PID等于进程组ID。 进程组生存期:进程组创建到最后一个进程离开(终止或转移到另一个进程组)。与组长进程是否终止无关。 一个进程可以为自己或子进程设置进程组 ID 相关函数 pid_t …...

EZ-Cube简易款下载器烧写使用方法

一、硬件连接 跟目标芯片接4根线 VCC、GND、TOOL、REST 四根线,如果板子芯片自己外接电源的,VCC 线可以不接。 二、 安装烧写软件和驱动 烧写软件:https://download.csdn.net/download/Stark_/87444744?spm1001.2014.3001.5503 驱动程序&a…...

sql server安装并SSMS连接

博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞&#xff…...

Python_pytorch (二)

python_pytorch 小土堆pytotch学习视频链接 from的是一个个的包(package) import 的是一个个的py文件(file.py) 所使用的一般是文件中的类(.class) 第一步实例化所使用的类,然后调用类中的方法(def) Torchvision 数据集 数据集使用(CI…...

java手机短信验证,并存入redis中,验证码时效5分钟

目录 1、注册发送短信账号一个账号 2、打开虚拟机,将redis服务端打开 3、创建springboot工程,导入相关依赖 4、写yml配置 5、创建controller层,并创建controller类 6、创建service层,并创建service类 7、创建工具类&#x…...

kubectl命令控制远程k8s集群(Windows系统、Ubuntu系统、Centos系统)

文章目录1. 本地是linux2. 本地是Windows1. 本地是linux 安装kubectl命令 法一:从master的/usr/bin目录下拷贝kubectl文件到本机/usr/bin目录下法二:GitHub下载kubectl文件 在家目录下创建.kube目录config文件 法一:将master上对应用户的~/.…...

【求解器-COPT】COPT的版本更新中,老版本不能覆盖的问题

【求解器-COPT】COPT的版本更新中,老版本不能覆盖的问题方法1方法2如果license还是找不到作者:刘兴禄 参考网址: COPT的下载和配置步骤如下: 教程 | Windows系统下如何安装COPT求解器并配置许可文件: https://zhuan…...

Vue3.0文档整理:一、简介

1.1:什么是vue? Vue是一款用于构建用户界面的javascript框架;它基于标准HTML、CSS和Javascript构建,并提供了一套声明式、组件化的编程模型,帮助你高效的开发用户界面。 1.2:MVVM工作原理 MVVM指的是model、view和vie…...

vue2 diff算法及虚拟DOM

概括:diff算法,虚拟DOM中采用的算法,把树形结构按照层级分解,只比较同级元素,不同层级的节点只有创建和删除操作。 一、虚拟DOM (1) 什么是虚拟DOM? 虚拟 DOM (Virtual DOM,简称 VDOM) 是一种…...

Ray和极客们的创新之作,2月18日来发现

所在论坛:数据库技术创新&云原生论坛分享时段:2.18 10:30-11:00分享主题:云原生数据库PieCloudDB :Unbreakable安全特性剖析分享嘉宾:王淏舟,拓数派资深研发工程师 由中国开源软件推进联盟PostgreSQL分…...

Dubbo 源码分析 – 集群容错之 Router

1. 简介 上一篇文章分析了集群容错的第一部分 – 服务目录 Directory。服务目录在刷新 Invoker 列表的过程中,会通过 Router 进行服务路由。上一篇文章关于服务路由相关逻辑没有细致分析,一笔带过了,本篇文章将对此进行详细的分析。首先&…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

idea大量爆红问题解决

问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"&#xff0…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...