Android h5页面token失效(记录项目的一个bug)

Android h5页面token失效(记录项目的一个bug),第1张

在做项目的时候,需要在原生页面集成H5页面,本地WebView会储存网页的cookie。

cookie中会存入一些用户信息和token。

这个token是有时效性,并且请求服务端的时候,服务端会进行token校验。H5在加载的时候会将token写入cookie中,并将cookie写入对应的域(domain)名中。但是项目的域名改过,却没有将原先的cookie清除,导致又写入新的cookie。再请求服务端的时候将根路径下的cookie全上传给服务端了,服务端根据cookie中的token别名去取 token(默认第一个),但是这个排序又是无序的。导致有时会拿到错误的token。即返回登录状态失效,直接退出了。

截图如下:

VDWebView的源码和使用示例

详情可见 VDWebViewProtocol

在使用 WKWebView 时我们需要调用 WKWebView 内 configuration 中的 userContentController 所属类 WKUserContentController 提供的实例方法进行注册,具体方法如下:

对应的注销方法为:

在使用 addScriptMessageHandler:name: 方法注册时传入的这个handler被循环引用,如果不调用对应的注销方法就会导致handler这个对象无法被释放,如果你这个handler传入是webView所在的控制器,那么你就要在销毁这个控制器前注销掉你注册的方法

tip: 如何知道控制器有没有被释放,重写dealloc(),没走此方法说明未被释放

简要分析可分为下面三步

这些做的好处在于你在使用VDWebView时无需自己去一个个手动注销了(如果你注册的方法多的话那就是噩梦了)

回调方式分两种:delegate和target-action; 两种方式只能存一,优先delegate

可通过两种方式进行JS方法的调用,推荐第一种

脚本的注入和移除

由于WKWebView的cookie是和NS>

uniapp原生的上传文件不支持携带cookie

直接新建vueconfigjs的这种方法解决了问题。注意:这种办法的好处显而易见,用js而非json去配置会更加的灵活,需要注意的是以上两种方案不能同时使用,第一种manifestjson会覆盖第二种vueconfigjs方案

以上就是关于Android h5页面token失效(记录项目的一个bug)全部的内容,包括:Android h5页面token失效(记录项目的一个bug)、基于WebKit完美支持JS交互和混编的WebView(VDWebView)、uniapp原生的上传文件不支持携带cookie等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9550293.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存