html基础标签+Http请求

文章目录

  • 目录

    文章目录

    前言

    一.网址组成

    二.HTTP协议解析

    Http 请求报文

     报文请求方法

     报文头

    Cache-Control 常见缓存控制行为

     cookie 解析

    Http 响应报文

     常见状态码

     三.域名解析(DNS)

    DNS域名服务器分类

    递归查询

    迭代查询

    四.端口号

    五.路径信息

    六.Https协议

    ​对称加密算法

    非对称加密算法

    总结


前言

        我们想象一个场景,当我们在浏览器中输入网址后,网页会自动生成对应网页且打开曾经登录过的网站,发现无需重新登录直接进入首页,这是如何做到的呢?

        其实,当们在浏览器输入网址后浏览器会通过网址中域名解析出的IP地址访问该网址对应的服务器;服务器收到浏览器发出的请求后,根据网址中包含的执行方法,路径信息等信息返回相应的文本信息,最终浏览器解析服务器返回的信息从而生成对应的网页!!!


一.网址组成

一个完整的网址(URL)通常包含以下部分:

  1. 协议(Protocol):表示访问网页时使用的通信协议,常见的有HTTP、HTTPS、FTP等。HTTP(超文本传输协议)是一种用于传输超文本的协议,是互联网上应用最为广泛的协议之一。HTTPS(安全超文本传输协议)是一种加密的HTTP协议,可以保证数据传输的安全性。FTP(文件传输协议)则是一种用于文件传输的协议。
  2. 域名(Domain Name):表示网站的名称,是网站在互联网上的唯一标识。域名由多个部分组成,包括主域名和子域名。例如,在www.example.com中,“www”是子域名,“example”是主域名,“.com”是顶级域名。域名也可以被视为一个IP地址的代称,目的是为了便于记忆。
  3. 端口号(Port):表示用于访问网站的端口号,默认为80。端口号的范围是0~65535。
  4. 路径(Path):表示网站上具体的文件或目录路径。路径通常由多个目录和文件名组成,用斜杠(/)分隔。例如,在www.baidu.com/news/index.html中,“news/index.html”就是路径。
  5. 此外,一个完整的网址还可能包含查询参数锚点。查询参数用于向服务器发送额外的数据,通常以“?”开头,后跟参数名和参数值。锚点则用于指定网页内部的定位点,以“#”开头,用于跳转到网页的特定位置。

二.HTTP协议解析

http协议详解

      HTTP协议(超文本传输协议)是用于从万维网(WWW)服务器传输超文本到本地浏览器的传输协议。它是互联网上应用最为广泛的一种网络协议。

  •   工作原理:HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端(即WEB服务器)发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
  •  特点:HTTP协议具有简单、灵活的特点。它基于TCP/IP协议,是一种无连接、无状态的协议,每个请求都是独立的,不依赖于之前的请求或响应。这意味着服务器不会跟踪客户端的状态,每个请求都需要包含足够的信息以供服务器处理。此外,HTTP协议还允许传输任意类型的数据对象,具有很好的扩展性。

点击此处了解TCP协议

Http 请求报文

 一个完成的Http请求报文包含以下三个部分:请求行+请求头+请求体

 报文请求方法
GET : 请求指定的页面信息,并返回实体主体。
HEAD : 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
POST : 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
PUT : 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE : 请求服务器删除指定的页面。
CONNECT : HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS : 允许客户端查看服务器的性能。
TRACE : 回显服务器收到的请求,主要用于测试或诊断。
PATCH : 是对 PUT 方法的补充,用来对已知资源进行局部更新 。
 报文头

以下是对HTTP请求报文头的一些常见字段的解析:

  1. Host:指定了请求的目标服务器的域名和端口号。这是HTTP/1.1规范中必须包含的字段,用于告诉服务器请求的目标地址。

  2. User-Agent:表示发出请求的客户端类型,通常包括浏览器类型、版本、操作系统等信息。服务器可以根据User-Agent来定制响应内容,以适配不同的客户端设备。

  3. Accept:告诉服务器客户端能够处理的媒体类型。这个字段可以包含多种媒体类型,并且可以通过质量因子(q-factor)来指定每种类型的优先级。

  4. Accept-Language:表示客户端偏好的自然语言。这可以帮助服务器返回针对特定语言环境的本地化内容。

  5. Accept-Encoding:客户端告诉服务器它支持的内容编码方式,如gzip、deflate等。服务器可以根据这个字段来决定是否对响应内容进行压缩。

  6. Accept-Charset:表示客户端支持的字符集,如UTF-8、GBK等。这有助于服务器正确编码响应内容。

  7. Connection:用于控制网络连接的行为。常见的值有"close"(表示请求完成后关闭连接)和"keep-alive"(表示保持连接以便复用)。

  8. Cache-Control:用于控制缓存行为。客户端可以通过这个字段来指定是否缓存请求的响应,以及缓存的有效期等。

  9. Authorization:当需要进行身份验证时,客户端会在这个字段中包含认证信息,如用户名和密码。

  10. Referer:表示发出请求的页面的URL。这个字段通常用于跟踪用户访问来源,也可以帮助服务器生成重定向或重写的规则。

  11. Content-Type:在POST或PUT请求中,用于指定请求体的媒体类型。例如,在发送表单数据时,可能会使用application/x-www-form-urlencodedmultipart/form-data

  12. Content-Length:表示请求体的长度(以字节为单位)。这个字段对于服务器来说很重要,因为它知道需要读取多少数据。

  13. Cookie:用于在客户端和服务器之间传递会话信息。浏览器会在每个请求中自动包含之前收到的所有Cookie。

Cache-Control 常见缓存控制行为
Public 指示响应可被任何缓存区缓存;
Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效;
no-cache 指示请求或响应消息不能缓存;
no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存;
max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应;
min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应;
max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定 max-stale 消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
 cookie 解析

        Cookie是HTTP协议的一种规范,它是服务器发送到用户浏览器并保存在本地的一小段数据。每当客户端(通常是浏览器)请求同一个网站时,它会发送之前接收并保存的Cookie信息到服务器。这些信息可以被服务器用来识别用户身份、跟踪会话状态等。

Cookie中主要包含以下内容:

  1. 名称(Name):Cookie的唯一标识符,用于标识和区分不同的Cookie。

  2. 值(Value):Cookie的具体数据,服务器发送到客户端的实际数据,可以是任何类型的数据,通常以字符串形式存储。

  3. 域名(Domain):指定哪些域名可以访问该Cookie。通常,Cookie只能由创建它的域名下的网页访问。

  4. 路径(Path):指定哪些路径或页面可以访问该Cookie。只有路径或子路径下的页面才能访问该Cookie。

  5. 有效期/过期时间(Expires/Max-Age):指定Cookie何时过期。如果设置了过期时间,浏览器会将Cookie保存到硬盘上,并在过期时间之前发送该Cookie给服务器。否则,Cookie只在浏览器会话期间有效,关闭浏览器后会被删除。

  6. 安全标志(Secure):如果设置了Secure属性,那么Cookie只能通过HTTPS协议发送,不能通过HTTP协议发送,这有助于保护Cookie的安全。

  7. HttpOnly标志:如果设置了HttpOnly属性,那么Cookie将无法通过客户端脚本(如JavaScript)访问,这有助于防止跨站脚本攻击(XSS)。

Http 响应报文

一个完成的Http响应头包含以下信息:响应行+响应头+响应体

 常见状态码
1xx : 信息响应类,表示接收到请求并且继续处理
2xx : 处理成功响应类,表示动作被成功接收、理解和接受
3xx : 重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx : 客户端错误,客户请求包含语法错误或者是不能正确执行
5xx : 服务端错误,服务器不能正确执行一个正确的请求
100(继续):请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
101(切换协议):请求者已要求服务器切换协议,服务器已确认并准备切换。

200(成功):服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
201(已创建):请求成功并且服务器创建了新的资源。
204(无内容):服务器成功处理了请求,但在返回的响应报文中不含实体的主体部分(没有资源可以返回)。
206(部分内容):服务器成功处理了部分GET请求。

301(永久移动):被请求的资源已永久移动到新位置。
302(临时移动):请求的资源临时从不同的URI响应请求,但请求者应继续使用原有位置来进行以后的请求。
304(未修改):自从上次请求后,请求的网页未修改过。

400(错误请求):请求有语法错误或无法理解。
401(未授权):请求要求身份验证。
403(禁止):服务器已经理解请求,但是拒绝执行它。
404(未找到):服务器无法找到被请求的页面。

500(内部服务器错误):服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
503(服务不可用):服务器暂时处于超负载或正在进行停机维护,无法处理请求。

 三.域名解析(DNS)

DNS 域名解析是将域名(如www.example.com)转换为对应的IP地址(如192.0.2.1)的过程。在这个过程中,涉及到两种主要的查询方式:递归查询和迭代查询。

DNS域名服务器分类

  • 根域名服务器: 主要负责解析互联网最顶级的域名,如.com、.org、.net等。当用户输入一个网址时,当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器,以获取目标域名对应的IP地址。根域名服务器全球共13台。
  • 顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。例如,.com域名的顶级域名服务器负责管理所有以.com结尾的域名。也被称为权威域名服务器
  • 权限域名服务器:这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。
  • 本地域名服务器:。这些服务器主要服务于其所在区域内的用户,提供快速的域名解析服务。当用户在浏览器中输入一个域名时,本地域名服务器会迅速将该域名解析为相应的IP地址,从而快速地完成网页的加载。

递归查询

递归查询是客户端向DNS服务器发送一个查询请求,然后等待DNS服务器返回查询结果。如果DNS服务器本地缓存中有对应的结果,则直接返回;如果没有,它会向其他DNS服务器(如根服务器)发送查询请求,并等待这些服务器返回结果。一旦获取到结果,它会将这个结果返回给客户端,并且可能会将结果缓存起来,以便未来对同样的查询请求能够更快地响应。

迭代查询

迭代查询是客户端向DNS服务器发送一个查询请求,然后等待DNS服务器返回一个或多个可能包含答案的DNS服务器的地址。客户端接着向这些服务器发送查询请求,重复这个过程,直到找到答案或确定答案不存在。

 总结:递归查询由本地域名服务器返回给主机域名对应的IP地址;迭代查询由本地服务器返回给主机一个其它可能查询到该域名的DNS服务器地址并由主机根据返回的地址自主访问。

通常采用模式:从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。

四.端口号

当一个计算机上的应用程序或服务需要与其他计算机进行通信时,它会使用一个特定的端口号作为目标端口。接收方的计算机会根据目标端口号来确定将数据包传送给哪个应用程序或服务。

五.路径信息

URL中的路径信息是指在主机名后面的部分,通常用来指定访问服务器上特定资源的路径。路径信息的作用如下:

  1. 标识资源位置:路径信息可以告诉服务器需要访问的资源所在的具体路径,服务器可以根据路径信息来定位资源的存储位置。

  2. 指定资源类型:路径信息的扩展名可以指定要访问的资源的类型,例如.html表示访问HTML文件,.jpg表示访问图片文件等。

  3. 支持页面跳转:路径信息可以用来实现页面之间的跳转,通过在URL中指定不同的路径信息,可以直接访问不同的页面或资源。

  4. 支持动态生成内容:路径信息可以用来传递参数,从而实现动态生成内容。服务器可以根据路径信息中的参数来生成不同的内容或返回不同的数据。

六.Https协议

        Http协议与Https最大的区别是Http协议是明文传输,Https协议是密文传输;当明文传输的报文被拦截后极易造成信息泄露!!!

 对称加密算法

          对称加密算法是一种使用相同的密钥进行加解密的算法,其加密和解密过程相互对称。在对称加密算法中,消息的发送方使用密钥将明文转化为密文,而消息的接收方则使用相同的密钥将密文转化回明文。

对称加密算法的主要特点包括:

  1. 加密和解密使用相同的密钥,因此速度较快。
  2. 密钥的管理较为困难,需要确保密钥的安全性。
  3. 对称加密算法通常具有较高的加密强度,可以提供较高的安全性。
  4. 若公钥在发送图中被拦截会导致信息泄露。

非对称加密算法

    非对称加密算法是一种使用不同的密钥进行加密和解密的加密算法。它使用一对密钥,包括公钥和私钥,其中公钥用于加密数据,私钥用于解密数据。

 总结:为防止对称加密算法中客户端公钥在传输给服务端的过程中被窃取,通常使用非对称加密算法来加密客户端的公钥,这样即使服务端的公钥被窃取,由于没有服务端的私钥所以无法解密从而获得客户端的公钥;而客户端与服务端之间的报文则使用对称加密算法进行加密从而提高通讯效率。


总结

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

毫末智行开年融资,揭幕了自动驾驶最后的赛点

毫末智行日前官宣拿到的超亿元B1轮融资,在行业引起了不小的关注。 一方面是信心问题,自动驾驶从早期拼技术到去年拼量产落地,创业公司们的声量此消彼长,有人领先也有人掉队,但市场的态度都以谨慎为主,甚至…

Vue组件置底方法,ElementPlus布局

问题描述 在开发网页时使用了elementplus的el-container组件 组件里分成了main和footer两块&#xff0c;但是想要将两个按钮置底在容器底部遇到了困难 如下图所示&#xff0c;在网页开发者工具可见两个按钮与左侧的图片没有底部对齐 此时我的代码是这样 <el-footer>&…

存储型xss案例

一、环境 DWVA网上自己找 二、开始闯关 先随便写看看 看看源码&#xff0c;数据是被插入到数据库里面了&#xff0c;魔术开关关闭了 数据最后插入显示到index.php 看一下我们目前的cookie值是 看了源码之后也没进行过滤那么我们试着直接插&#xff0c;看是否过滤 之后用户每…

监控与日志

一、监控 1、监控类型 从监控类型上划分&#xff0c;在 K8s 中可以分成四个不同的类型&#xff1a; ① 资源监控&#xff1a;这种监控主要关注于基础资源的使用情况&#xff0c;例如 CPU、内存、网络等。通常使用数值或百分比等单位来统计&#xff0c;可以通过 Zabbix、Tele…

Android 显示系统框架

一.FrameBuffer FrameBuffer 介绍&#xff1a; FrameBuffer中文译名为帧缓冲驱动&#xff0c;它是出现在2.2.xx内核中的一种驱动程序接口。主设备号为29&#xff0c;次设备号递增。 Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。FrameBuffer机制模仿显卡的功能…

github用法详解

本文是一篇面向全体小白的文章,图文兼备。为了让小白们知道如何使用GitHub,我努力将本文写得通俗易懂,尽量让刚刚上网的小白也能明白。所以各位程序员们都可以滑走了~ 啥是GitHub? 百度百科会告诉你, GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为…

可以用来测试的接口

实际开发过程中&#xff0c;我们可以通过postman工具来测试接口 get请求 https://api.github.com/events?id1&nameuser post请求 http://httpbin.org/post 参数1&#xff1a;key1value1 参数2&#xff1a;key2value2

2023年NOC大赛软件创意编程(学而思)赛道图形化小高组复赛试题

目录 第一题 闪烁的星星 第二题 聚沙成塔 第三题 画十字

力扣刷题:100.相同的树

题目&#xff1a; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,2,3] 输出&#xff…

【JavaScript 漫游】【027】表单事件简记

文章简介 本篇文章为【JavaScript 漫游】专栏的第 026 篇文章&#xff0c;对 JavaScript 中的表单事件进行了简单记录。 input 事件 input 事件当 <input>、<select>、<textarea> 的值发生变化时触发。对于复选框&#xff08;<input typecheckbox>&…

百度搜索引擎SEO优化方法

随着互联网的不断发展&#xff0c;搜索引擎已经成为人们获取信息、产品和服务的主要途径之一。而在中国&#xff0c;百度作为最大的搜索引擎&#xff0c;其影响力不可忽视。了解并掌握百度SEO关键词优化方法&#xff0c;对于提升网站在搜索引擎中的排名至关重要。 关键词选择&a…

【硬件工程师面经整理12_逆变器篇】

文章目录 逆变器1.1 半桥逆变&#xff08;half-bridge inverter&#xff09;电路1.2 全桥逆变&#xff08;H-bridge inverter&#xff09;1.3 H桥电路结构&#xff0c;用的是什么管子&#xff0c;有没有出现问题&#xff0c;怎么解决的 逆变器 逆变电路的基本工作原理 单相桥…

双周回顾#005 - 零

一件悲伤的事实&#xff0c;这两周&#xff0c;成长值为零&#xff5e;&#xff5e; 从大数据部门临时抽调到互联网部门&#xff0c;支援重构的“配置下单”项目。 一个变种的低代码架构设计&#xff0c;唯一比较有意思的是它的业务组件的设计与校验设计&#xff0c;算是学习…

数据结构测试题

目录 1.闰年判断 2.志愿者选拔 3.单词接龙 4.对称二叉树 5.英雄南昌欢迎您 6.时间转换 7.矩阵乘法 8. Huffuman树 1.闰年判断 题目描述&#xff1a; 给定一个年份&#xff0c;判断这一年是不是闰年。 当以下情况之一满足时&#xff0c;这一年是闰年&#xff1a; 1. 年…

VMwareWorkstation17.0搭建Windows98微软操作系统虚拟机(完整安装步骤·全网最详细图文教程)更新中

VMwareWorkstation17.0搭建Windows98微软操作系统虚拟机&#xff08;完整安装步骤全网最详细图文教程&#xff09; VMwareWorkstation17.0搭建Windows98微软操作系统虚拟机&#xff08;完整安装步骤全网最详细图文教程&#xff09;

使用mysqld --install命令时出现MSVCR120.dll文件丢失错误

Visual C 2013 and Visual C Redistributable Package https://support.microsoft.com/en-us/help/3179560/update-for-visual-c-2013-and-visual-c-redistributable-package 进去之后先找到自己的版本&#xff0c;x64还是x86&#xff0c;下载 vcredit &#xff0c;进行安装即…

Mybatis | 动态SQL

目录: 动态SQL中的 “元素” :\<if>元素\<choose>、\<when>、\<otherwise>元素\<where>、\<trim>元素\<set>元素\<foreach>元素\<bind>元素 作者简介 &#xff1a;一只大皮卡丘&#xff0c;计算机专业学生&#xff0c;正…

编写dockerfile挂载卷

编写dockerfile文件 [rootwq docker-test-volume]# vim dockerfile1 [rootwq docker-test-volume]# cat dockerfile1 FROM centosVOLUME ["volume01","volume02"]CMD echo "------end------" CMD /bin/bash [rootwq docker-test-volume]#使用do…

使用Spark探索数据

需求分析 使用Spark来探索数据是一种高效处理大规模数据的方法&#xff0c;需要对数据进行加载、清洗和转换&#xff0c;选择合适的Spark组件进行数据处理和分析。需求分析包括确定数据分析的目的和问题、选择合适的Spark应用程序和算法、优化数据处理流程和性能、可视化和解释…

Qt 简约又简单的加载动画 第七季 音量柱风格

今天和大家分享两个音量柱风格的加载动画,这次的加载动画的最大特点就是简单,只有几行代码. 效果如下: 一共三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc…