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

前端HTTP,JavaScript,网络

HTTP

五,与HTTP协作的Web服务器

用单台虚拟主机实现多个域名
通信数据转发程序:代理,网关,隧道
  • 代理:服务器和客户端中间人的角色

    使用代理服务器理由:利用缓存技术减少网络带宽的流量。

    • 代理分类:是否使用缓存,是否修改报文

    • 缓存代理。会预先将资源的副本(缓存)保存在代理服务器上

    • 透明代理。不对报文做任何加工的代理

  • 网关:转发其他服务器通信数据的服务器,接受从客户端发送来的请求时,就像自己拥有资源的源服务器一样对请求进行处理

    利用网关可以将HTTP请求转化为其他协议通信

  • 隧道:在相隔甚远的客户端和服务器两者间选择中转,保持双方通信连接的应用程序

保存资源的缓存

指代理服务器或客户端本地磁盘内保存的资源副本。能减少对源服务器访问,解释通信流量和通信时间。

  • 转发响应时,复制资源后保存在缓存服务器上。

    缓存的有效期限

    若缓存失效,缓存服务器将会再次从源服务器上获取“新”资源

    客户端的缓存

    缓存不仅可在缓存服务器内,也可以在客户端浏览器中。在客户端的缓存:临时网络文件

在HTTP出现之前的协议

FTP传输文件时使用的协议

六,HTTP首部

HTTP报文首部

HTTP请求报文:方法,URI,HTTP版本,HTTP首部字段

HTTP响应报文:HTTP版本,状态码(数字和原因短语),HTTP首部字段

HTTP首部字段
HTTP首部字段传递重要信息

HTTP首部字段结构

首部字段名:字段值
Content-Type:text/html

4种HTTP首部字段类型
  • 通用首部字段

Cache-Control操作缓存的工作机制。

表示是否能缓存的指令:public,private,no-cache(不缓存过期的资源,防止从缓存中返回过期的资源)

控制可执行缓存的对象的指令:no-store(不进行缓存)

指定缓存期限和认证的指令:s-maxage指令,max-age指令,min-fresh指令,max-stale指令,only-if-cached指令,must-revalidate指令,proxy-revalidate指令,

connection
  1. 控制不再转发给代理的首部字段

  2. 管理持久连接。HTTP/1.1默认持久连接,断开连接需要Close

Date

表明创建HTTP报文的日期和时间

Date: Tue Jul 03 04:40:40:59 2012
Pragma
Cache-Control: no-cache
Pragma: no-cache

我不接受缓存

Trailer

首部字段Trailer事先说明在报文主体后记录了哪些首部字段

Transfer-Encoding

规定了传输报文主体时采用的编码方式

Upgrade

检测HTTP协议以及其他协议是否可使用更高的版本进行通信

Via

追踪客户端与服务器之间的请求和响应报文的传输路径

各个代理服务器会往Via首部添加自身服务器的信息

Warning

告知用户一些与缓存相关的问题的警告

  • 请求首部字段

    Accept:通知服务器,用户代理可以处理的媒体类型以媒体类型的相对优先级

    • 文本类型text/html

    • 图片文件image/png

    • 视频文件video/mpeg

    • 应用程序使用的二进制文件

    Accept-Charset:通知服务器用户代理支持的字符集及字符集的相对优先级的相对顺序

    Accept-Encoding:告知服务器用户代理支持的内容编码及内容编码的优先级顺序

    • gzip

    • compress

    • deflate

    • identity

    Accept-Language告知服务器用户代理能处理的自然语言集(指中文或英文)

    Expect期望出现的某种特定行为。

    From如果有事请联系这个电子邮箱

    From:info@hackr.jp

    Host告知服务器,请求资源所处在的互联网主机名和端口号

    If-Match条件请求。符合匹配条件才返回

    If-Modified-Since告知服务器若它字段遭遇资源的更新时间,才处理请求。如果是在它时间之后,如果请求的资源没有更新,则返回304状态码

    If-None-Match正好与之前的If-Match相反

    If-Range

    If-Unmodified-Since

    Max-Forwards

    Proxy-Anthorization

    Range

    Referer告知服务器请求的原始资源的URI

    TE

    User-Agent将创建请求的浏览器和用户代理名称等信息传达给服务器

  • 响应首部字段

Accept-Ranges告知客户端服务器是否能处理范围内的请求,以指定获取服务器某个部分的资源

Age告知客户端,源服务器在多久前创建了响应。字段值的单位为秒

ETag。首部字段ETag能告知客户端实体标识。它是一种可将资源以字符串形式做唯一性标识的方式。

  1. 强ETage,不论实体发生多么细微变化都会改变其值

  2. 弱ETag只用于提示资源是否相同,只有资源发生根本改变之后,才改变ETag,

    ETag:W/“usagi-1234”

Location配合3xx:重定向的响应,提供重定向的URL

Proxy-Authenticate把代理服务器所要求的认证信息发送给客户端

Server告知客户端当前服务器上安装的HTTP服务器应用程序的信息

Vary

WWW-Authenticate

  • 实体首部字段

Allow

Content-Encoding

Content-Language

Content-Length

Expires会将资源失效的日期告知客户端

Last-Modified指明资源最终修改的时间

为Cookie服务的首部字段

工作机制是用户识别和状态管理。调用Cookie时,由于可校验Cookie的有效期,以及发送方的域,路径,协议等信息,减少被攻击的可能。

  • Set-Cookie

该拓展不是为了防止XSS攻击开发的

  • Cookie

七,确保Web安全的HTTPS

信息窃听,身份伪装等安全问题

HTTP缺点
  • 明文通信不加密

  • 不验证信方信息

  • 无法证明报文完整性

遭攻击者拦截并篡改内容的攻击叫中间人攻击

通信加密

SSL安全套接层 TLS安全层传输协议。

内容加密

对报文本身进行加密

HTTP+ 加密+认证+完整性保护 = HTTPS

HTTPS用混合加密机制

JavaScript:核心(ECMAScript),文档对象模型(DOM),浏览器对象模型(BOM)

  • ECMA-262:语法,类型,语句,关键词,保留字,操作符,全局对象

ES6,2015年发布,支持类,模块,迭代器,生成器,箭头函数,期约,反射,代理和众多数据类型

  • DOM是一个应用编程接口(API),将整个页面抽象为一组分层节点,DOM通过创建表示文档的树,让开发者可以随心所欲控制网页的内容和结构。使用DOM API,可以轻松删除,添加,替换,修改节点。

  • DOM级别:

    DOM Core。提供映射XML文档,方便访问和操作文档任意部分的方式

    DOM HTML。拓展了dom core,增加了特定于HTML的对象和方法。

    BOM

    浏览器对象模型API,HTML5统一了很多东西,BOM的实现细节会日趋一致。

对象

基本数据类型,复合值。hash,dictionaty。

对比不仅时字符串到值的映射,除可以保持自由的属性,JavaScript对象还可以从一个称为原型的对象继承属性。

prototypal inheritance

网络

GET和POST区别
  • POST传递的传输在request body,GET传递的参数在url后拼接

  • GET用于查询,POSTyongyu提交某种信息进行某些修改操作

  • PST相对于GET安全

  • GET会被浏览器主动缓存,POST不会,要手动设置

  • GET请求长度有限制,POST没

POST和PUT请求区别

PUT请求是更新数据

POST为创建数据

HTTP1.1和HTTP2.0区别
  • 二进制协议:1.1解析基于文本,2使用二进制,将请求响应分割成更小的帧,从而实现多路复用

  • 多路复用:

    • HTTP队头阻塞

    • TCP队头阻塞

  • 头部信息压缩:1.1请求时会带上所有信息,如Cookie。2引入头部压缩,头部信息使用gzip压缩后再发送

  • 服务器推送:2 允许服务器向客户端主动发资源,局限于静态资源如css,img

HTTP队头阻塞

指同一域名下浏览器连接数有限制(6-8),并且请求要在连接内按顺序处理,这样会导致某个请求的延迟或阻塞会影响后续请求的处理

TCP队头阻塞

TCP协议为了保证数据包的有序传输,如果一个数据包丢失损坏后,TCP接收端会要求重新发送该数据包,直到被正确接收为止

HTTP和HTTPS区别
HTTPHTTPS
不需要证书需要CA证书
端口80443
安全性明文传输,不安全基于SSL加密,相对安全

HTTP请求中keep-alive是什么

keep-alive时一种长连接

HTTP1.0默认短连接,使用keep-alive能简历长连接

HTTP1.1默认开始长连接

三次握手和四次回收

seq序列号

ack确认号

ACK确认收到序列号

SYN发起新连接

FIN释放一个连接

当在浏览器输入URL并且按下回车键发送了什么
  • URL解析,判断URL是否规范

  • 浏览器判断缓存,看请求的资源在浏览器是否缓存,如果有缓存就不需要向服务器发送新的请求--强缓存和协商缓存

  • DNS解析,获取目标服务器IP

  • 建立TCP连接(三次握手)

  • 发送HTTP请求

  • 服务器处理,返回数据

  • 浏览器解析渲染页面

  • TCP连接关闭(四次挥手)

  • 强缓存和协商缓存区别
强缓存
  • HTTPS怎么加密的

    TLS/SSL层增加到HTTP和TCP层中间

    img

安全层如何实现:混合加密(对称加密—非对称加密)

  1. 对称加密

  2. 非对称加密

  3. CA证书

    客户端和服务器用 非对称加密(RSA)安全协商出对称加密的密钥

    协商好后,通信内容用 对称加密(AES) 加密传输,提高速度。

    同时双方用 散列函数(Hash) 计算消息摘要,确保传输过程中消息没有被篡改

大白话:(引入第三方,获取公钥A,进行传输)

  • 服务端传递CA证书给浏览器

  • 客户端通过CA证书验证网站,拿到公钥A

  • 客户端对称加密生产密钥X,用公钥A加密后返回服务端

  • 服务端用私钥A解密公钥A,拿到客户端的密钥X

  • 后续通信就使用密钥X进行加密

信息安全:
  • 散列函数hash:把任意长度的数据(消息)映射为固定长度字符串的算法

  • 对称加密

  • 非对称加密

DNS完整查询

浏览器缓存--本地DNS服务器--根域名服务器--顶级域名服务器--权威域名服务器

TCP/UDP

TCP:面向字节流;面向连接,不支持广播和多播

UDP:面向报文;面向无连接

UDP不可靠原因
  • 传输数据前不需要先建立连接、

  • 不需要确认

  • 不跟踪连接

WebSockets原理

long polling长轮询 。跟http很像,建立websocket连接。

在单个TCP连接上实现全双工通信的网络协议,允许服务端和客户端之间保持持久连接,双方可以随时互相发送数据,而不需要每次通信都建立新的连接。

服务器可以向客户端主动推送消息,客户端也可以主动向服务器推送消息。

协商缓存和强缓存
强缓存:使用强缓存策略时,如果缓存资源有效,浏览器会从本地读取缓存资源并返回200

http头信息中的Expires属性和Cache-Control属性

Expires指定资源的过期时间。

Cache-Control属性:

  • private

  • public

  • max-age=xxx过期时间

  • no- cache不进行强缓存,但有协商缓存

  • no-store不强缓存,也不协商缓存

两个方式一起用的时候,Cache-Control优先级高于 Expires

协商缓存

命中协商缓存条件:

  • Cache-Control: no-cache

  • max-age时间过期

使用协商缓存时,会先向服务器发送一个请求,如果资源没有发生修改,则请求返回304状态,浏览器使用本地 缓存。如果资源发生修改,则返回修改后的内容

request headers中的Etag属性和Last-Modified属性,来进行设置。其中,ETage优先于Last-Modified

强缓存和协商缓存区别
  • 强缓存优先级高于协商缓存

  • 协商缓存不管是否命中都会发一次请求

  • 强缓存返回200,协商缓存返回304

  • Ctrl+F5 会强制刷新会跳过所有缓存,而F5刷新跳过强缓存,但是会检查协商缓存。

http://www.dtcms.com/a/545097.html

相关文章:

  • 汽车充电站光储充项目方案
  • 为什么Service层和Mapper层需要实现interface接口
  • 杭州做网站公司排名建筑工人招工网
  • 服务RejectedExecutionException问题对Semaphore的思考
  • GitLab 钩子 + Jenkins 自动化构建项目
  • 安装Pytorch GPU+CPU版本【通过本地安装解决无法使用pip指令下载问题】
  • DevExpress WinForms中文教程:Data Grid - 如何自定义汇总函数?
  • 西安建设市场诚信信息平台网站wordpress文章缩略图
  • 解锁未来:云原生如何重塑企业数字竞争力
  • 铜陵市建设工程管理局网站专业的网站开发团队
  • AI赋能座舱产品需求开发
  • SENT协议详解
  • 2026年ESWA SCI1区TOP,基于成本差异的跨境公路物流混合车队构成与调度:一种双层规划方法,深度解析+性能实测
  • 2025广州国际物联网产业生态博览会(物联网展)最新技术与亮点揭秘!
  • 【C++】哈希表实现 - 链地址法/哈希桶
  • 建设一个教程视频网站需要什么资质龙岗网络推广公司
  • 后端日志框架
  • 服务器在企业中的作用与价值
  • 《搭建属于自己的网站之网页前端学习》基础入门
  • 拿网站做商标童装网站建设
  • 金融投资网站毕设做网站是不是太low
  • 【pandas】pandas apply 方法详解
  • 散户如何运用券商手机智能T0算法
  • CRMEB-PHP订单删除机制详解
  • 分数阶微分方程谱方法求解
  • 经典“绿叶”算法——SVM回归预测(SVR)算法及MATLAB实现
  • 南漳网站开发wordpress flash加载插件
  • 过度依赖单一工具会带来哪些风险
  • 132-Spring AI Alibaba Vector Neo4j 示例
  • 杜集网站建设免费做网站公司ydwzjs