添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

这个问题已经好几位同学反馈了,我本地实在是难以复现

假如主应用为 host ,子应用代码会在 iframe 内部运行,而 iframe 的 src 就是设置为主应用的 host,按理来说不应该存在这个跨域的问题

首先排除一下主应用的代码污染问题 #54 ,在主应用的 html 的 head 第一个元素加一段这样的代码 <script>if(window.parent !== window) {window.stop()}</script> 看看还有没有这个问题

在看看看是 getTargetValue 函数报的错误,这个函数的第二个参数是个啥东西呢

方便的话有个最小的 demo 就好了,我可以一点点排查

子应用和主应用是同源的,为何还会报这种跨域错误 DOMException: Blocked a frame with origin from accessing a cross-origin frame 报错 Aug 17, 2022

@gadzan 好的,这个地方父应用的 document.domain 被改变指的改到了其他域名还是只是三级域名改到二级域名也会出现这个问题呢,正常来说主应用的 domain 也不应该改成跨域的

@yiludege 三级域名改到二级域名,准确来说是将 domain 改到父域,因为有时候需要操作父域的 Cookies, 所以会更改主应用 domain

官方例子中vue版主应用,主应用(VUE) 子路由(VUE3)的路由模式同时修改为hash模式,会出现这种问题

具体修改:
examples/main-vue/src/router/index.js

mode: "history" =》 mode: "hash",

examples/vue3/src/router/index.js

history: createWebHistory(basename) =》 history: createWebHashHistory(basename)

DOMException: Blocked a frame with origin " http://localhost:8001 " from accessing a cross-origin frame.
at Wujie.mount (webpack-internal:///../../packages/wujie-core/esm/sandbox.js:529:96)
at eval (webpack-internal:///../../packages/wujie-core/esm/sandbox.js:451:35)

==============

但是vue主应用 vue2子应用同为hash模式,并没有异常

@gadzan 好的,这个地方父应用的 document.domain 被改变指的改到了其他域名还是只是三级域名改到二级域名也会出现这个问题呢,正常来说主应用的 domain 也不应该改成跨域的

@yiludege 三级域名改到二级域名,准确来说是将 domain 改到父域,因为有时候需要操作父域的 Cookies, 所以会更改主应用 domain

主应用 xxx.example.com
子应用 yyy.example.com
将主应用与子应用的document.domain都设置为example.com会出现当前的问题

将domain改到父域的原因是由于应用部署了单点登录,需要携带cookie信息才能访问
如果不设置相同domain,iframe里加载vite应用请求type=module的es模块资源时,请求无法携带cookie信息。

目前看到的相关的解决方案是通过nginx进行反代解决跨域问题,但未尝试,成功加载js后可能还是会出现这个问题(捂脸

这个问题已经好几位同学反馈了,我本地实在是难以复现

假如主应用为 host ,子应用代码会在 iframe 内部运行,而 iframe 的 src 就是设置为主应用的 host,按理来说不应该存在这个跨域的问题

首先排除一下主应用的代码污染问题 #54 ,在主应用的 html 的 head 第一个元素加一段这样的代码 <script>if(window.parent !== window) {window.stop()}</script> 看看还有没有这个问题

在看看看是 getTargetValue 函数报的错误,这个函数的第二个参数是个啥东西呢

方便的话有个最小的 demo 就好了,我可以一点点排查

我这里的报错是这样的,请问一下如何解决呢?

1、在主应用的 html 的 head 第一个元素加一段这样的代码 <script>if(window.parent !== window) {window.stop()}</script>;加这段代码也还存在这个问题;
2、试了 常见问题10 中的解决方案1,也还存在这个问题。

这个问题已经好几位同学反馈了,我本地实在是难以复现
假如主应用为 host ,子应用代码会在 iframe 内部运行,而 iframe 的 src 就是设置为主应用的 host,按理来说不应该存在这个跨域的问题
首先排除一下主应用的代码污染问题 #54 ,在主应用的 html 的 head 第一个元素加一段这样的代码 <script>if(window.parent !== window) {window.stop()}</script> 看看还有没有这个问题
在看看看是 getTargetValue 函数报的错误,这个函数的第二个参数是个啥东西呢
方便的话有个最小的 demo 就好了,我可以一点点排查

chrome_Ip5Wezdmmg 我这里的报错是这样的,请问一下如何解决呢?

1、在主应用的 html 的 head 第一个元素加一段这样的代码 <script>if(window.parent !== window) {window.stop()}</script>;加这段代码也还存在这个问题; 2、试了 常见问题10 中的解决方案1,也还存在这个问题。

我也是这个问题,我主应用里嵌入了两个不同的子应用,A子应用出这个问题,B子应用正常