首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KarmaJS预加载安全CDN脚本

KarmaJS预加载安全CDN脚本
EN

Stack Overflow用户
提问于 2022-07-07 15:23:34
回答 1查看 24关注 0票数 0

我正在尝试预加载安全的CDN脚本(公司策略声明,所有的urls都是安全的),用于测试。尝试通过创建元素const scriptElememtn = document.createElement('script');并将元素添加到文档中,因为它是安全的,因此添加了身份验证cookie document.cookie = "auth=0bec1d8f-e586-4e60-ace1-06935d5e0b41".,因为CDN与公司域const scriptElememtn = document.createElement('script');一起使用,而业力是localhost,因此它没有发送该请求。

我的问题是

  • 为什么没有在CDN请求中发送cookie。
  • 如何预加载脚本?
  • 可以使用axios库下载脚本吗?

F 216

EN

回答 1

Stack Overflow用户

发布于 2022-07-08 00:58:36

通过在karma.conf.js文件中设置代理来解决此问题。在src/test.js文件(所有测试的init代码)中,

  1. 将脚本元素的src设置为相对路径,而不是完全限定的路径。

src/test.js下,添加以下块,

代码语言:javascript
复制
const originalKarmaLoad = (window as any).__karma__.loaded;
 (window as any).__karma__.loaded = async function () {
      const wcplScript = document.createElement('script');
      const waitForLoad = new Promise((resolve, reject) => {
        wcplScript.onload = () => resolve(0);
        wcplScript.onerror = () => {
          console.error('Failed to load CDNs');
          reject();
        };
      });         
      document.cookie = `${cookie.name}=${cookie.value}`;
      wcplScript.src = '/cdn/lib/'; // use the relative path 
      wcplScript.async = false;
      wcplScript.type = 'module';
      document.body.insertBefore(wcplScript, document.body.lastChild);        
      await waitForLoad;
      originalKarmaLoad.call(this);
    };

karma.conf.js下,将代理设置为指向CDN,

代码语言:javascript
复制
{
.....
proxies: {
      '/cdn/lib/': {
        target: 'https://mycompany.com/cdn/lib',
        changeOrigin: true,
      },
    },
    proxyValidateSSL: false,
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72900457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档