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表示阻止此次加载,否则允许此次加载
  })
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
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表示阻止此次加载,否则允许此次加载
  }
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
分享
微博
QQ
微信
回复
2024-12-17 16:00:53
相关问题
HarmonyOS 如何拦截web加载url
738浏览 • 1回复 待解决
HarmonyOS 人脸SDK是不是有替代
1289浏览 • 1回复 待解决
HarmonyOS @State 是不是不能修饰枚举
970浏览 • 1回复 待解决