WebView导航前后事件中返回的URL不一致问题
其实这是WebView处理**重定向(Redirect)**的正常行为,咱们来拆解一下背后的逻辑:
Navigating事件的本质:这个事件在WebView刚开始发起请求的瞬间就会触发,它捕获的是你最初触发跳转的那个原始URL——也就是你看到的带
setprefs参数的长地址。这个URL的作用应该是提交语言偏好设置(hl=af对应南非荷兰语),Google的服务器接收到这个请求后,会自动触发重定向操作,把页面跳转到主页。Navigated事件的本质:这个事件要等到WebView完全完成页面加载,并且所有重定向流程都走完之后才会触发。所以它返回的是最终稳定停留的那个页面的URL,也就是简洁的
https://www.google.com/。
你可以自己验证一下:在普通浏览器里打开那个带参数的长URL,打开开发者工具的Network面板,就能看到请求过程中会出现一个3xx状态码的重定向响应,然后浏览器自动跳转到Google主页——WebView的行为和这个完全一致。
内容的提问来源于stack exchange,提问作者David Pilkington
相关产品推荐
相关产品推荐

