dynamicHeadAppend 逻辑优化
Author: awmleerCreated Apr 20, 2020Updated Sep 17, 2026
Labelspr welcome
Background
当通过 head.appendChild 动态引入 js script 时,乾坤会通过 fetch 去异步加载脚本,然而这和浏览器的默认行为可能会出现差别,从而带来一些意外 bug。
Proposal
使用 XHR 来代替 fetch
XHR 虽然是有些过时,但是个人推荐 XHR 主要是基于以下两点的考虑:
- 更好的浏览器兼容性
- fetch 会忽略跨域的
set-cookie,详见MDN上的文档
fetch() won't receive cross-site cookies; you can’t establish a cross site session using fetch. Set-Cookie headers from other sites are silently ignored.
根据 script 标签上的不同属性实现不同的行为
既然乾坤要使用自己的实现来替代浏览器的默认实现,就应该和 HTML 标准尽可能保持一致,script 标签上的一些属性会让其有不同的行为,而乾坤也应该根据这些属性有不同的行为:文档
例如,当 script 标签 crossorigin 属性为 use-credentials 时,应该对应到 xhr.withCredentials = true。
Source: umijs/qiankun