HarmonyOS 避免加载不安全的URL或页面,资料这里逻辑是不是写反了?校验成功,直接拦截了

关于避免加载不安全的URL或页面这里,是不是写反了: 校验成功,返回true, 然后直接拦截了。

// 校验函数
function checkUrl(str: string): boolean {
  let tmpUri = new uri.URI(str);
  let res = tmpUri.normalize(); // 注意,需要先对tmpUri进行normalize,否则会绕过安全校验  
  console.info("res.scheme:" + res.scheme) // 协议  
  console.info("res.host:" + res.host) // 域名
  console.info("res.port:" + res.port) // 端口  
  console.info("res.path:" + res.path) // 路径 
  console.info("res.ssp:" + res.ssp)
  // 获取到scheme、host、port、path等参数值后,根据业务实际进行安全校验  
  // 此处省略部分,根据业务需要进行校验  
  if ("校验成功") {
    return true;
  }
  return false
}

Web({ src: 'www.huawei.com', controller: this.controller })
  .onLoadIntercept((event) => {
    console.info('onLoadIntercept:' + event.data.toString())
    let tempUrl = event.data.toString()
    return checkUrl(tempUrl) // 返回true表示阻止此次加载,否则允许此次加载
  })
HarmonyOS
2024-12-17 12:57:47
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

onLoadIntercept()这个方法的调用,返回true会拦截web组件当前输入的src地址。返回false则放行。比如下面这种写法,加载url为huawei时就会拦截,不是huawei就正常显示。

.onLoadIntercept((event) => {
  let tempUrl = event.data.toString()
  if(tempUrl == "https://www.huawei.com"){
    retrun true   // 返回true表示阻止此次加载,否则允许此次加载
  }
})
分享
微博
QQ
微信
回复
2024-12-17 16:00:53
相关问题
HarmonyOS 如何拦截web加载url
397浏览 • 1回复 待解决
HarmonyOS 人脸SDK是不是有替代
863浏览 • 1回复 待解决
HarmonyOS @State 是不是不能修饰枚举
504浏览 • 1回复 待解决