鸿蒙webview开发中web内部网络请求访问资源跨域问题,客户端解决方案

鸿蒙webview开发中web内部网络请求访问资源跨域问题,客户端解决方案

项目场景:

在鸿蒙系统的h5混合开发过程中,我们使用web组件进行混合开发,后台并未对跨域问题进行处理,web组件内部发送网络请求出现访问资源跨域问题。


问题描述

访问资源跨域是浏览器在发送网络请求时经常遇到的问题,而鸿蒙的web组件也就相当于一个浏览器,因此在web组件内部发送,也会出现跨域问题,这种问题一般需要再后台解决,但是鸿蒙官方也有提供客户端解决跨域的方案,官网:解决Web组件本地资源跨域问题-管理Web组件的网络安全与隐私-ArkWeb(方舟Web)-应用框架 - 华为HarmonyOS开发者


原因分析:

为了提高安全性,ArkWeb内核不允许file协议或者resource协议访问URL上下文中来自跨域的请求。因此,在使用Web组件加载本地离线资源的时候,Web组件会拦截file协议和resource协议的跨域访问。可以通过方法二设置一个路径列表,再使用file协议访问该路径列表中的资源,允许跨域访问本地文件。当Web组件无法访问本地跨域资源时,开发者可以在DevTools控制台中看到类似以下报错信息:

官方解决方案描述:

在鸿蒙官网,提供了两种解决方案:

一、为了使Web组件能够成功访问跨域资源,开发者应采用http或https等协议,替代原先使用的file或resource协议进行加载。其中,替代的url域名为自定义构造的仅供个人或者组织使用的域名,以避免与互联网上实际存在的域名产生冲突。同时,开发者需利用Web组件的onInterceptRequest方法,对本地资源进行拦截和相应的替换。

二、

通过设置设置一个路径列表。当使用file协议访问该列表中的资源时,允许进行跨域访问本地文件。此外,一旦设置了路径列表,file协议将仅限于访问列表内的资源(此时,fileAccess的行为将会被此接口行为覆盖)。路径列表中的路径必须符合以下任一路径格式:

1.应用文件目录通过Context.filesDir获取,其子目录示例如下:/data/storage/el2/base/files/example/data/storage/el2/base/haps/entry/files/example

2.应用资源目录通过Context.resourceDir获取,其子目录示例如下:/data/storage/el1/bundle/entry/resource/resfile/data/storage/el1/bundle/entry/resource/resfile/example

当路径列表中的任一路径不满足上述条件时,系统将抛出异常码401,并判定路径列表设置失败。若设置的路径列表为空,file协议的可访问范围将遵循fileAccess的规则。

解决方案:

由于本人在开发过程中使用到了第二种解决方案, 在这里本人提供具体的操作步骤,以及指出本人踩过的坑点。

在web组件上本使用的是  resource:// 协议去访问资源,使用如下 X:

 Web({ src: 'resource://rawfile/dist/index.html#/xxxx', controller: this.webController })

然而setPathAllowingUniversalAccess 属性需要读取的是/data/storage/el1/bundle/entry/resource/resfile目录下的文件,使用Context.resourceDir获取到的路径为空

原来是在项目创建时并不会自动生成resfile文件,需要我们手动创建,在项目的src/main/resources下新建文件夹:resfile

将打包好的dist文件,也就是h5页面文件,放在resfile文件夹下面,通过以下方法读取文件   

web({ src:'resource://resfile/dist/index.html#/xxxxxxx', controller: this.webController })

 做好以上步骤之后,就来到了解决跨域最为关键的点:

设置setPathAllowingUniversalAccess,这里需要指定解除跨域的文件

 // 在设置好setPathAllowingUniversalAccess 之后,需要将src置空,使用loadUrl加载页面 Web({ src: "", controller: this.webController }) .onControllerAttached(() => { try { // 设置允许可以跨域访问的路径列表 this.webController.setPathAllowingUniversalAccess([ // 这里获取到resfile文件目录,后边拼上自己的h5文件 getContext().resourceDir + "/dist/index.html" ]) this.webController.loadUrl('原页面路径') } catch (error) { console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); } }) .javaScriptAccess(true) .fileAccess(true) .domStorageAccess(true)

 至此即成功使用官方的第二种方法去在客户端解决咱们在鸿蒙+h5的混合开发中的h5页面跨域问题了

Read more

PyCharm+GitHub Copilot零成本配置手册:学生认证/2FA/汉化疑难一次解决

PyCharm + GitHub Copilot 零成本配置手册:从学生认证到流畅编码的全链路实战 作为一名学生开发者,你是否曾羡慕那些能流畅使用AI编程助手的同行,却苦于复杂的认证流程、网络环境的掣肘,或是面对英文界面时的些许不适?将前沿的AI工具无缝融入日常开发工作流,本应是一个提升效率的愉悦过程,而非充满障碍的挑战。今天,我们就来彻底解决这些问题,打造一套专为学生群体设计、开箱即用的PyCharm与GitHub Copilot生产力解决方案。这套方案不仅会手把手带你完成从学生身份验证到IDE集成的每一步,更会聚焦于国内用户常见的“水土不服”问题,提供稳定的替代方案和优化技巧,让你真正零成本、零门槛地拥抱AI辅助编程。 1. 基石构建:GitHub学生认证与账户安全加固 在享受任何福利之前,一个经过验证且安全的GitHub账户是首要前提。学生认证是获取GitHub Copilot Pro免费使用权的钥匙,而双重身份验证(2FA)则是守护这把钥匙的保险箱。 1.1 高效通过GitHub学生认证 学生认证的核心在于向GitHub证明你当前的在读身份。整个过程需要细心,但绝非

语音情感分析预处理:FSMN-VAD片段提取实战

语音情感分析预处理:FSMN-VAD片段提取实战 你是不是遇到过这种情况:一段长达一小时的会议录音,里面夹杂着大量的咳嗽声、翻纸声、键盘敲击声,还有大段的沉默。当你想要分析这段录音的情感变化时,这些“噪音”和“空白”不仅浪费计算资源,还会严重干扰分析结果。 今天要介绍的,就是解决这个问题的“利器”——FSMN-VAD离线语音端点检测。它能像一位经验丰富的剪辑师,精准地识别出音频中真正有声音的部分,把那些没用的静音片段统统剪掉,只留下干净的语音内容。 1. 为什么需要语音端点检测? 想象一下,你正在分析一段客服通话录音,想要了解客服人员的情绪变化。如果录音里包含了客户等待时的背景音乐、长时间的沉默,甚至系统提示音,这些非人声部分会严重影响情感分析的准确性。 语音端点检测(VAD) 就是专门解决这个问题的技术。它的核心任务很简单:在一段音频中,准确地找出“哪里是说话的开始,哪里是说话的结束”。 1.1 传统方法的局限性 在深度学习普及之前,人们通常使用基于能量的方法来检测语音。简单来说,就是设定一个音量阈值: * 当音量超过某个值,就认为是语音开始 * 当音量低于某个

AI绘画电商产品提示词撰写指南

AI绘画电商产品提示词撰写指南

在电商领域,利用 AI 绘画生成产品图片正逐渐成为提升商品视觉吸引力、提高运营效率的重要手段。而撰写精准有效的提示词,是让 AI 理解并生成符合预期产品图片的关键。 一、明确产品关键信息 产品基础描述 产品类型与用途:清晰界定产品所属类别,无论是服装、电子产品、家居用品还是美妆产品等,这是 AI理解产品的基础。同时,简要说明产品的核心用途或目标受众,可分为3层结构(按优先级排序) * 基础层:明确产品核心属性(避免 AI 生成偏差),包括「产品类别 + 规格 + 材质 / 工艺」,例: “女士夏季短袖连衣裙(长度到膝盖),雪纺面料,蕾丝领口” * 场景层:搭建使用场景(增强代入感),包括「使用环境 + 搭配元素 + 人群画像」,例: “在海边沙滩场景,搭配草编帽和珍珠凉鞋,适合 25-35

2026年高校论文AI率新规解读:哪些学校已明确AIGC检测要求

2026年高校论文AI率新规解读:哪些学校已明确AIGC检测要求

2026年高校论文AI率新规解读:哪些学校已明确AIGC检测要求 引言:AI率检测成为毕业"新门槛" 2026年毕业季,一个让无数毕业生焦虑的新词频繁出现在各大高校的通知文件中——AIGC检测。和传统的查重率不同,AIGC检测针对的是论文中由人工智能生成内容的占比,也就是我们常说的"AI率"。 从2024年下半年开始,教育部就多次发文要求高校加强对学术不端行为的管理,其中明确将"使用AI工具代写论文"纳入学术不端范畴。进入2026年,越来越多的高校不再只是口头警示,而是将AIGC检测正式写入毕业论文管理办法,成为论文答辩前必须通过的一道硬性关卡。 那么,目前到底有哪些学校已经明确了AIGC检测要求?各校的AI率标准又是多少?这篇文章将为你全面梳理和解读2026年的高校论文AI率新规。 一、政策背景:为什么高校越来越重视AI率检测 1.1 AI写作工具的普及倒逼政策升级 ChatGPT在2022年底横空出世后,以其为代表的大语言模型迅速普及。国内如文心一言、通义千问、讯飞星火等AI工具相继上线,AI写作的门槛被大幅降低。据不完全统计,2025年有超过60%的在校大学生使