Angular应用添加blob:到CSP引发部分Chromium浏览器卡顿问题求助
问题原因分析
1. Chromium内核Blob资源与Cookie的绑定验证冲突
Chromium对blob://协议的资源加载逻辑,会默认尝试关联当前页面的Cookie信息进行权限校验。当用户本地存在过期、格式异常或与域名不匹配的Cookie时,浏览器在加载Blob Worker脚本时会陷入循环:每次发起请求都携带无效Cookie,被CSP或服务器权限拦截后重试,反复的校验操作直接阻塞主线程,导致按钮响应延迟。清除Cookie后,浏览器不再携带无效凭证,验证流程终止,性能恢复正常。
2. CSP中blob:规则触发扩展Hook的叠加校验
部分Chromium用户安装的隐私类、广告拦截类浏览器扩展,会Hook浏览器的CSP检查逻辑。当CSP中包含blob:规则时,扩展会对所有Blob资源启动额外的安全扫描,和浏览器原生的CSP校验叠加后,每一次Worker创建都会触发多层重复校验,耗时呈指数级增加。而这类扩展通常会依赖Cookie状态判断扫描策略,清除Cookie后扩展的扫描逻辑会暂时简化,卡顿问题缓解。
3. Angular Worker打包的Blob资源冗余信息触发重复计算
旧版本Angular(12.x-14.x)在生成Worker脚本的Blob URL时,会携带冗余的源标识信息。当CSP允许blob:后,Chromium的源匹配模块会对这些冗余信息进行重复解析计算,再加上用户本地的Cookie异常导致的校验重试,最终造成主线程计算过载,界面响应变慢。清除Cookie后,浏览器跳过部分不必要的源匹配步骤,计算量下降,性能恢复。
内容的提问来源于stack exchange,提问作者Gatschet
相关产品推荐
相关产品推荐

