问题现象
在元服务开发中,已开启元服务豁免管控,使用AtomicServiceWeb加载网页地址,加载失败,网页无法正常展示。
AtomicServiceWeb({
src: '待加载的网页地址',
controller: this.controller
}) 背景知识
元服务Web(AtomicServiceWeb)组件用于在元服务内显示Web页面内容,为开发者提供Web页面加载、页面交互等能力。在元服务内,仅能使用AtomicServiceWeb组件显示Web页面,且需要配置业务域名。
为了保护好元服务生态,AtomicServiceWeb组件需要对webview访问的域名做管控,同时,为了满足开发者多样化的诉求,提供了以下形式的域名管控方案:
主页面和iframe页面为rawfile本地路径,放通管控。
主页面和iframe页面为https网络路径,走域名白名单管控,需要开发者在HarmonyOS 开发者中心上配置元服务的业务域名白名单才可访问,打开元服务豁免开关时,可跳过域名白名单的校验。
主页面和iframe页面的其它协议请求(例如:http、ftp),管控拦截,不允许访问。
点击页面超链接的跳转请求,为tel和mailto协议时,分别拉起打电话和发邮件界面。
非主页面和iframe页面的http和https协议请求,走域名黑名单管控,不在运营后台统一配置的黑名单内,都可访问。
- 非主页面和iframe页面的其它协议请求,放通管控。

问题定位
- 本地调试运行,执行命令hdc shell "hilog -b D"打开debug日志开关。
- 查看日志,过滤“AtomicServiceWeb”关键词,可查看域名白名单和黑名单校验日志。checkUrl代表走域名白名单校验,checkUrlNew代表走域名黑名单校验。ret=true表示放通,ret=false,表示被拦截,url为访问的请求地址。

- 继续过滤ret=false的日志中,发现存在url被黑名单校验拦截,导致网页加载失败。

分析结论
AtomicServiceWeb中非主页面和iframe页面的http和https协议请求,走域名黑名单管控,对于在黑名单中的域名,请求会被拦截,网页加载异常。