自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 vue3的app.config.globalProperties挂载全局变量没有类型定义,无法通过ctrl查看变量下的属性和方法

参考:

2024-07-19 10:17:01 107

原创 IDEA设置自动注释的params的Experssion​

【代码】IDEA设置自动注释的params的Experssion​。

2024-04-24 23:37:00 177

原创 在threejs中实现DollyZoom(希区柯克变焦)

在threejs中实现DollyZoom(希区柯克变焦)

2024-04-12 13:21:36 264

原创 为什么 webpack -v 不显示版本号

webpack -v 命令可以用来显示webpack、webpack-cli、webpack-dev-server的版本信息的,如下:System:Binaries:Browsers:Packages:但是有时候 webpack -v的输出缺少上面的 Packages 项,很多博客中都说是这是因为没有安装成功,其实用户已经成功了。

2024-03-04 00:47:23 984

原创 6 HTTP/3

2024-03-02 00:26:18 92

原创 5.1 HPACK 算法

算法的主要压缩思路是通过静态字典表和动态字典表来共享已知的HTTP头部字段,使用索引号来代替HTTP头部字段名和值,从而减少了传输数据的大小;即通过发送动态表中对应的索引号来代替完整的HTTP头部字段和值;这些字段和值是写死在协议中的,发送方可以通过发送静态表中对应的索引号来代替完整的HTTP头部字段和值,从而实现压缩;其中存储了请求或响应中出现的自定义HTTP头部字段和值;静态表是预定义的,其中包含了61个常见的HTTP头部字段和值;动态表的初始状态为空,首次请求之后动态表已经建立相关记录;

2024-03-02 00:25:22 150

原创 5 HTTP/2

2024-03-02 00:22:53 77

原创 4.2.1 密码规范和密码组合

通信双方在安全连接中所使用的算法必须符合密码安全协议的规定,密码规范 Cipher Specs 和 密码组合 Cipher Suites 正好定义了合法的密码算法组合;密码规范 Cipher Specs 用于认证加密算法和信息摘要算法的组合,通信双方必须同意这个密码规范才能进行通信;而 Cipher Suites 则定义了通信双方所使用的加密算法的组合,对应前面 TLS 原理中的四个功能的组合;

2024-03-02 00:22:23 141

原创 4.2 HTTPS 连接的详细过程(TLS1.2)

2024-03-02 00:21:52 108

原创 4.1.3 证书链

证书链(certificate chain)也称为证书路径,是用于认证实体合法身份的证书列表,具体到 HTTPS 通信中,就是为了验证服务器的合法身份;客户端在验证证书链时,必须对链中所有证书的数字签名进行验证,直到达到根证书为止;

2024-03-02 00:21:12 135

原创 4.1.2 中间人攻击

黑客拦截”用公开加密密钥机密后的共享密钥“后不是解密不了吗,好,那我就不拦截这个了,我拦截第一个请求好吧,我拦截服务端传给你的公开密钥,我拦截到了,我再给你个假的,从根上就伪装成你,以后就等于我是个中间人(中转站),所有的请求,数据都要经过我,那我就可以记录下来其中你的敏感数据,可怕;(像极了《让子弹飞》中,张麻子与马邦德的关系,出任鹅城县长)其实中间人攻击还要有好多种;

2024-03-02 00:20:54 151

原创 4.1.1 对称加密和非对称加密

如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西;从图中可以看出,被加密的数据在传输过程中是无规则的乱码,即便被第三方截获,在没有密钥的情况下也无法解密数据,也就保证了数据的安全;非对称加密,顾名思义,就是加密和解密需要使用两个不同的密钥:公钥( key)和私钥(private key);私钥做数字签名,公钥验证;

2024-03-02 00:20:20 313

原创 4.1 SSL/TLS 协议如何解决三个风险的

2024-03-02 00:19:30 121

原创 4 HTTPS

很多互联网巨头也在力推 HTTPS,比如谷歌的 Chrome 浏览器在访问 HTTP 网站时会在地址栏显示不安全的提醒,微信要求所有的小程序必须使用 HTTPS 传输协议,苹果也要求所有在 App Store 上架的应用必须采用 HTTPS ,国内外的大部分主流网站也都已迁移至 HTTPS,可见 HTTPS 全面取代 HTTP 只是时间问题;网景公司(Netscape)在 1994 年推出首版网页浏览器,网景导航者时,推出 HTTPS 协议,以 SSL 进行加密,这是 SSL 的起源;

2024-03-02 00:18:38 932

原创 3.2 管道网络传输和队头阻塞

即可在同一个 TCP 连接里面,客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间;以前的做法是,在同一个TCP连接里面,先发送 A 请求,然后等待服务器做出回应,收到后再发出 B 请求;但是服务器还是按请求的顺序响应的,先回应 A 请求,完成后再回应 B 请求;此外,管道机制稳定性差,而且存在兼容性问题;即如果其中一个请求非常耗时或者因为某些原因没有及时的响应,后面的其他的请求就会被阻塞;如果资源太多的话,可以将同一页面的资源分散到不同域名下;

2024-03-02 00:17:57 228

原创 3.1 长连接和短连接

持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态,这样浏览器就可以继续通过相同的 TCP 连接发送请求,保持连接减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载,还节约了网络带宽;有时,尽管我已经发送完所有数据,但浏览器并不知道这一点,它无法得知这个打开的连接上是否还会有新数据进来,只能傻傻地等了;那就是每发起一个请求,都要新建一次 TCP 连接(三次握手),而且是串行请求,做了无畏的 TCP 连接建立和断开,增加了通信开销;

2024-03-01 15:24:36 486

原创 3 HTTP/1.1

在1997年以前使用的是RFC 1945定义的HTTP/1.0协议,现在普遍使用的是升级版本HTTP/1.1,HTTP/1.1已是互联网建议标准[RFC 7231];如果用户不愿意使用持续连接的浏览器,可以选择IE浏览器上面的“工具”→“Internet选项”→“高级”等项目,把“HTTP 1.1设置”的选择取消即可;好在浏览器都能够打开5~10个并行的TCP连接,而每一个TCP连接处理客户的一个请求;流水线方式的特点,是客户在收到 HTTP的响应报文之前就能够接着发送新的请求报文;

2024-03-01 15:21:16 879

原创 2.7 内容协商(Content Negotiation)

当浏览器的默认语言为英语或中文,访问相同 URI 的 Web 页面时,则会显示对应的英语版或中文版的 Web 页面;内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源;由服务器端进行内容协商,以请求的首部字段为参考,在服务器端自动处理;但对用户来说,以浏览器发送的信息作为判定的依据,并不一定能筛选出最优内容;比如英语版和中文版的 Web 页面,它们内容上虽相同,但使用的语言却不同;是服务器驱动和客户端驱动的结合体,是由服务器端和客户端各自进行内容协商的一种方法;

2024-03-01 15:17:54 160

原创 2.6 HTTP传输大文件

通常浏览器在发送请求时都会带上"Accept-Encoding"头字段,该字段用来声明浏览器支持的压缩格式列表,例如gzip,deflate,br等,这样服务器就可以从中选择一种压缩算法,并将其放进"Content-Encoding"响应头中,最后将元数据压缩后发给浏览器;这种方法的缺点是,gzip等压缩算法通常只是对文本文件有较好的压缩率,而图片,音频,视频的多媒体文件由于本身已经是高度压缩的,此时再使用gzip处理不会变小(甚至还有可能会增大一点),所以这种方法就不适用了;如果不支持的话该怎么办呢?

2024-03-01 15:14:27 739

原创 2.5.1 Cookie 的工作原理

最高的位置是阻止所有Cookie,而最低的位置是接受所有Cookie,中间的位置则是在不同条件下可以接受Cookie;例如在浏览器IE11.0中,选择工具栏中的“工具”→“Internet选项”→“隐私”命令,就可以看见菜单中的左边有一个可上下滑动的标尺,它有六个位置;当A收到这个响应时,其浏览器就在它管理的特定Cookie文件中添加一行,其中包括这个服务器的主机名和Set-cookie后面给出的识别码;当用户A浏览某个使用Cookie的网站时,该网站的服务器就为A产生一个唯一的识别码,

2024-03-01 15:09:45 867

原创 2.5 Cookie

path=/webhp",那么只有".google.com.hk/webhp"及"/webhp"下的任一子目录如"/webhp/aaa"或"/webhp/bbb"会发送cookie信息,而".google.com.hk"就不会发送,即使它们来自同一个域;例如,可以是".google.com.hk"(不包含子域,表示它对google.com.hk的所有子域都有效),也可以是"www.google.com.hk"(包含子域)。max-age的默认值为-1,若 max-age 为0,则表示删除cookie;

2024-03-01 15:05:48 436

原创 2.4.5 媒体类型(MIME Type)

它是经过互联网(IETF)组织协商,以 RFC(是一系列以编号排定的文件,几乎所有的互联网标准都有收录在其中) 的形式作为建议的标准发布在网上的,在IETF RFC 6838中进行了定义和标准化;来确定如何处理实体主体(Email 附件的类型也是通过 MIME Type 指定的),因此在报文头中(通过 Content-Type)添加正确的 MIME类型非常重要;如果配置不正确,浏览器、服务器可能会曲解文件内容,网站将无法正常工作,并且下载的文件也会被错误处理;application/pdf:pdf格式。

2024-03-01 15:01:17 810

原创 2.4.4.2 多部分对象集合(Multipart)

中的一种称为多部分对象集合(Multipart)的方法,来容纳多份不同类型的数据;例如:图片等二进制数据以 ASCII 码字符串编码的方式指明;发送邮件时,我们可以在邮件里写入文字并添加多份附件,这是因为采用了。)允许邮件处理文本、图片、视频等多个不同类型的数据;字符串用来划分多部分对象集合指明的各类实体,但是在。,通常是在图片或文本文件等上传时使用;(file1.txt的数据)…// 描述了上传的文件类型。// 描述内容的基础配置。,发送的一份报文主体内。出现在文件上传的时候;字符串之前还会插入“

2024-03-01 14:55:30 706

原创 2.4.4.1 Content-Type常用值解析

在使用表单提交时,请求方式是post时,设置form标签的属性 entry="application/x-www-form-urlencoded"(这也是默认值),则请求头中的content-type的值就是 application/x-www-form-urlencoded;XMLHttpRequest对象.setRequestHeader("Content-type","application/x-www-form-urlencoded");要么,有的第三方库默认是application/json;

2024-03-01 14:53:05 257

原创 2.4.4 实体首部字段

2024-03-01 14:44:34 107

原创 2.4.3 响应首部字段

2024-03-01 14:42:50 81

原创 2.4.2.1 Host、Referer、Origin的区别

2024-03-01 14:41:04 96

原创 2.4.2 请求首部字段

2024-03-01 14:38:06 86

原创 2.4.1 通用首部字段

2024-03-01 14:27:56 97

原创 2.4 HTTP头部字段(信息字段)

通用首部字段即可用于请求报文,也可用于响应报文,是作为一个独立整体而不是与特定资源或事务相关联;请求报文可以使用的头部字段;允许客户端传递关于自身的信息和希望的响应报文形式;定义被传送资源的信息,即可用于请求报文,也可用于响应报文;响应报文可以使用的头部字段,服务器用于传递自身的信息;

2024-03-01 14:24:29 192

原创 2.3.1 HTTP状态码

HTTP状态码的英文为HTTP Status Code;HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用;HTTP状态码原先有33种[RFC 2616],后来又增加了几种信息响应类,表示通知信息,如服务器收到请求或正在进行处理,需要请求者继续执行操作;100Continue客户必须继续发出请求;101切换协议;服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议;200OK。

2024-02-29 23:03:59 816

原创 2.3 HTTP响应报文(response massage)

三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”,表示一行的结束;响应头部也可以有好几行,每一行都表示一个头部(header)信息,但也可以不使用;报文的第一行用于区分当前报文是请求报文还是响应报文,在请求报文中的开始行叫做。在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段,即可选的;报文主体是报文要发送的数据,是第一个空行以后的所有部分;每一个请求报文发出后,都能收到服务器端的一个响应报文;而报文主体是一个可选的数据块,与起始行和首部不同的是。

2024-02-29 23:00:16 716

原创 2.2.2 HTTP 请求方法

本质上来讲,PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置(报文中的URL),而POST则没有,POST的数据存放位置由服务器自己决定;有的人可能觉得这个方法没什么用,其实不是这样的;但是,鉴于HTTP/1.1 的PUT 方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般的Web 网站不使用该方法;POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的;

2024-02-29 22:49:41 587

原创 2.2.1 实体、实体主体和报文主体

HTTP 报文可以传输很多类型的数字数据:图片、音频、视频、HTML 文档等;作为请求或响应的有效载荷数据(补充项)被传输,所以在HTTP 报文中用。表示了要传输的文件;

2024-02-29 22:40:40 256

原创 2.2 HTTP请求报文(request message)

报文所使用的HTTP版本,格式为:HTTP/<major>.<minor>;{此行是首部行的开始,这行给出主机的域名}客户端和服务器建立TCP连接以后,客户端随后会发送一个HTTP请求报文到服务器,请求服务器的服务;三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”,表示一行的结束;报文的第一行用于区分当前报文是请求报文还是响应报文,在请求报文中的开始行叫做。报文主体是报文要发送的数据,是第一个空行以后的所有部分;而报文主体是一个可选的数据块,与起始行和首部不同的是。

2024-02-29 22:28:26 1892

原创 2.1 HTTP报文

实际上HTTP报文会像河水一样流动,不管是请求报文还是响应报文,所有报文都会向下游(downstream)流动;所有的报文的发送者都在接收者的上游(upstream);报文通常以一些文本形式的元信息(meta-information)开头(包括对报文进行描述的起始行(对于请求报文来说,代理1位于代理3的上游;但对于响应报文来说,它就位于代理3的下游;)块),这些信息描述了报文的内容及含义,后面跟着可选的数据主体(body)部分;报文流入源端服务器,工作完成后,会流回用户的Agent代理中;

2024-02-29 22:09:31 123

原创 2. HTTP/1.0

因为http是无连接的,这限制了每次TCP连接只处理一个请求(http请求报文);

2024-02-29 22:00:44 1591

原创 正向代理和反向代理

来接受internet上其他主机的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,这样的代理服务器也叫做反向代理服务器;虽然正向代理服务器和反向代理服务器所处的位置都是客户端和真实服务器之间,所做的事情也都是把客户端的请求转发给服务器,再把服务器的响应转发给客户端,但是二者之间还是有一定的差异的;正向代理就是,你要访问一个网站,比如“谷哥”,然后发现访问不到,于是你访问了一个能访问到“谷哥”的代理服务器,让它帮你拿到你想浏览的页面;

2024-02-29 21:45:47 608

原创 客户端和服务端

HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接;一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送;远程服务器:为客户端(用户)计算机提供各种服务的高性能计算机,主要功能是接受客户浏览器发送的请求,分析请求,并给予响应,相应的结果发送给客户端的浏览器;的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议;

2024-02-29 21:38:23 212

原创 标识符的命名规范

如果所有单词都小写,称之为lower snake case(小蛇式),例如"get_user_name";名称中间的标点被替换成下划线(_),在以 Pascal 标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型;当变量名或函式名是由一个或多个单词连结在一起,而构成的唯一识别字时。当变量名或函式名是由一个或多个单词连结在一起,而构成的唯一识别字时。首单词是小写的,接下来的单词都以大写字符开头;首单词是大写的,接下来的单词都以大写字符开头;),所有单词都小写,例如。变型(可以是任何类型)

2024-02-29 21:22:26 248

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除