umijs / qiankun

📦 🚀 Blazing fast, simple and complete solution for micro frontends.
https://qiankun.umijs.org
MIT License
15.58k stars 2k forks source link

[Bug]从 url import 的代码,会逃逸沙箱吗? #2971

Open vdorchan opened 1 month ago

vdorchan commented 1 month ago

提问之前强烈建立您能先阅读一下《如何正确的提出一个 Issue》

What happens?

在子应用通过 url import 代码并执行,打印 window,拿到的是真实 window,而不是代理 window(子应用)。 这种情况是 remote import 的代码逃逸沙箱了吗?该怎么处理,从而拿到子应用的 window 变量。

最小可复现仓库

1、say-window.js 文件 console.log('~~~~from remote url', { window })

2、子应用 import import('http://xxx/say-window.js')

3、查看打印内容 真实 window,而不是代理 window

相关环境信息

daiwanxing commented 1 week ago

你通过 dynamic import 加载的脚本内访问 的 window 就是全局的 window,而非子应用代理的 window。因为 es module 的模块作用域都是独立。

如果你想拿到子应用的 fake-window,可以通过 window.proxy