Comments (19)
这个问题已经好几位同学反馈了,我本地实在是难以复现
假如主应用为 host ,子应用代码会在 iframe 内部运行,而 iframe 的 src 就是设置为主应用的 host,按理来说不应该存在这个跨域的问题
首先排除一下主应用的代码污染问题 #54 ,在主应用的 html 的 head 第一个元素加一段这样的代码 <script>if(window.parent !== window) {window.stop()}</script> 看看还有没有这个问题
在看看看是 getTargetValue 函数报的错误,这个函数的第二个参数是个啥东西呢
方便的话有个最小的 demo 就好了,我可以一点点排查
from wujie.
加了<script>if(window.parent !== window) {window.stop()}</script>这个脚本,还专门给attrs的src设了一个空页面,还是报这个跨域错误
from wujie.
这就排除了主应用污染的问题,现在就是一个纯前端跨域报错的排查,我没有现场也没有复现的最小demo,难排查
from wujie.
环境依赖PC应用的容器,很难搞出一个在浏览器上的demo
from wujie.
这个问题已经有好几个反馈了,有线上地址也有本地localhost,有点不知道怎么查了,子应用的iframe和主应用都是同源的
from wujie.
from wujie.
使用qiankun可正常加载子应用的静态资源
from wujie.
扎心了,给点信息
from wujie.
在我文章的评论区有位同学似乎找到了一些线索:
from wujie.
有可能是本地环境设置了 attrs 的 src
from wujie.
这个问题已经在常见问题中列出来了可能性,需要用户去排查一下
from wujie.
这个问题已经在常见问题中列出来了可能性,需要用户去排查一下
@yiludege 也有可能是父应用的 document.domain 被改变了导致的,建议加上这个排查项;
from wujie.
@gadzan 好的,这个地方父应用的 document.domain 被改变指的改到了其他域名还是只是三级域名改到二级域名也会出现这个问题呢,正常来说主应用的 domain 也不应该改成跨域的
from wujie.
@gadzan 好的,这个地方父应用的 document.domain 被改变指的改到了其他域名还是只是三级域名改到二级域名也会出现这个问题呢,正常来说主应用的 domain 也不应该改成跨域的
@yiludege 三级域名改到二级域名,准确来说是将 domain 改到父域,因为有时候需要操作父域的 Cookies, 所以会更改主应用 domain
from wujie.
官方例子中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模式,并没有异常
from wujie.
@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后可能还是会出现这个问题(捂脸
from wujie.
from wujie.
这个问题已经好几位同学反馈了,我本地实在是难以复现
假如主应用为 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,也还存在这个问题。
from wujie.
这个问题已经好几位同学反馈了,我本地实在是难以复现
假如主应用为 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,也还存在这个问题。
我也是这个问题,我主应用里嵌入了两个不同的子应用,A子应用出这个问题,B子应用正常
from wujie.
Related Issues (20)
- 子应用打包部署后,antd组件库样式问题 HOT 2
- OffScreenCanvas无法使用自定义字体,Canvas和HTML可以应用自定义字体。 HOT 2
- 无界子应用集成@tiptap富文本,第二次打开子应用时,中文输入法输入'@',会连续出现两个(@@),window.getSelection()永远为None HOT 1
- 3层嵌套的情况下,不同UI框架,字体图标不显示问题 HOT 1
- ios中子应用白屏,没有报错,看现象子应用中对应的js文件没加载,安卓正常 HOT 3
- jquery开发的项目,集成到无界时,js和css文件资源加载自动被注释,导致页面错乱 HOT 1
- 路由后退无反应问题 HOT 6
- 子系统的静态资源无法加载 HOT 1
- 官方可否写一个集成jQuery那种老的项目的demo
- 官网卡死, 100%复现
- 我希望配置化无界子应用,不知道子应用路由是hash模式还是history模式, WujieVue中怎么判断是否要 /#/
- 复用主应用的css样式,子应用不生效问题
- 主子应用都是Angular,子应用在使用MutationObserver用作动画处理时,zone.js中的patchClass的get方法陷入死循环
- 主应用和子应用为用一个工程,子应用偶发白屏 HOT 2
- 子应用在CDN中引入了地图框架Cesium,加载子应用时报错DOMException: Failed to construct 'Worker': Script at 'http://localhost:9081/cdn/cesium/Workers/cesiumWorkerBootstrapper.js' cannot be accessed from origin 'http://localhost:8080'. HOT 1
- WujieReact loading props not work
- 移动端 safari 浏览器 通过手势侧滑返回会闪屏
- 主应用内添加子应用初始化启动浏览器控制台报错
- 子应用 CSS 文件重复加载
- 单例模式下,cssBeforeLoaders在首次加载时生效,切换页面再次回到子应用所在页面,cssBeforeLoaders添加的css代码消失
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wujie.