diff --git a/entry/src/main/ets/pages/BridgeGameContainer.ets b/entry/src/main/ets/pages/BridgeGameContainer.ets index 6a4ee2a..1bfc4e8 100644 --- a/entry/src/main/ets/pages/BridgeGameContainer.ets +++ b/entry/src/main/ets/pages/BridgeGameContainer.ets @@ -64,6 +64,17 @@ export struct BridgeGameContainer { /** onControllerAttached:建桥 + 经组装根注册全部能力(框架 §A.1:能力注册放这里)。 */ private setupBridge(): void { const hostCtx: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext; + + // 🔴 V2 file:// 跨域(框架 §7.3):file:// 页面的 XHR/fetch 默认被 CORS 拦截(origin 'null')。 + // 官方方案:把资源根加入"允许跨域访问"白名单,file:// 访问该路径下资源即放开同源限制。 + // 对 H5 完全透明(仍 file:// 加载)。路径须在 filesDir 子目录且与用户文件隔离。 + try { + this.controller.setPathAllowingUniversalAccess([`${hostCtx.filesDir}/tsgames`]); + } catch (e) { + const err = e as Error; + Logger.tag('BridgeGameContainer').e(`setPathAllowingUniversalAccess failed: ${err.message}`); + } + const adapter = new WebviewControllerAdapter(this.controller); const bridge = new BridgeController(adapter); bridge.setBridgeJs(BridgeJsLoader.load(hostCtx));