相关问题
HarmonyOS Web组件本地资源跨域问题
723浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用鸿蒙Web组件本地资源跨域拦截器?
942浏览 • 1回复 待解决
Web组件如何访问跨域资源?
1171浏览 • 1回复 待解决
HarmonyOS Web本地资源跨域加载异常
764浏览 • 1回复 待解决
HarmonyOS web资源跨域问题
1139浏览 • 1回复 待解决
HarmonyOS Web组件无法跨域加载图片资源
807浏览 • 1回复 待解决
HarmonyOS Web组件跨域请求问题
1365浏览 • 1回复 待解决
HarmonyOS web组件通过file://协议加载本地文件,本地文件JS中发起http请求报错,提示跨域了,这种如何解决?
923浏览 • 1回复 待解决
HarmonyOS web组件加载本地离线包的cookie跨域
1198浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何解决HarmonyOS中资源加载优化问题?
1230浏览 • 1回复 待解决
HarmonyOS Web组件加载本地H5页面,页面中接口请求被跨域规则限制,如何解除跨域限制
1057浏览 • 1回复 待解决
HarmonyOS Web组件加载本地资源目录resource/rawfile下的html文件,页面内https请求报跨域问题
1401浏览 • 1回复 待解决
HarmonyOS web组件关闭跨域拦截
883浏览 • 1回复 待解决
HarmonyOS Web组件加载本地H5文件跨域
1321浏览 • 1回复 待解决
HarmonyOS web离线加载请求跨域问题
1658浏览 • 1回复 待解决
HarmonyOS webview组件跨域问题
1267浏览 • 1回复 待解决
HarmonyOS web加载本地h5页面的网络请求跨域问题
1086浏览 • 1回复 待解决
HarmonyOS 本地webView跨域方案
2599浏览 • 1回复 待解决
webview中跨域问题解决方案
4861浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何解决鸿蒙HarmonyOS NEXT图像撕裂问题?
1214浏览 • 1回复 待解决
HarmonyOS web组件接入前端vite打包的本地h5项目时遇到跨域问题
999浏览 • 1回复 待解决
HarmonyOS Web跨域问题 Access-Control-Allow-Origin
928浏览 • 1回复 待解决
HarmonyOS webview跨域问题
1902浏览 • 1回复 待解决
HarmonyOS 请问在Web组件上如何解决mixed-content问题
1145浏览 • 1回复 待解决
Gauge组件问题,该如何解决?
1523浏览 • 1回复 待解决
ArkWeb内核为了安全性不允许使用file或resource协议访问URL上下文中的跨域请求。此问题的解决方案如下:使用http或https协议来替代file或resource协议加载本地资源。例如,构造自己的域名来替代真实域名,通过Web组件的onInterceptRequest方法拦截请求,并进行资源替换。
typescript import { webview } from '@kit.ArkWeb';
@Entry @Component struct Index { @State message: string = 'Hello World'; webviewController: webview.WebviewController = new webview.WebviewController();
schemeMap = new Map([ ["https://www.example.com/index.html", "index.html"], ["https://www.example.com/js/script.js", "js/script.js"], ]);
mimeTypeMap = new Map([ ["index.html", 'text/html'], ["js/script.js", "text/javascript"] ]);
build() { Row() { Web({ src: "https://www.example.com/index.html", controller: this.webviewController }) .onInterceptRequest((event) => { if (this.schemeMap.has(event.request.getRequestUrl())) { let rawfileName = this.schemeMap.get(event.request.getRequestUrl())!; let mimeType = this.mimeTypeMap.get(rawfileName); let response = new WebResourceResponse(); response.setResponseData($rawfile(rawfileName)); response.setResponseEncoding('utf-8'); response.setResponseMimeType(mimeType); response.setResponseCode(200); response.setReasonMessage('OK'); response.setResponseIsReady(true); return response; } return null; }); } } }