
在做项目的时候,需要在原生页面集成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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)