karosLi / KKJSBridge

一站式解决 WKWebView 支持离线包,Ajax/Fetch 请求,表单请求和 Cookie 同步的问题 (基于 Ajax Hook,Fetch Hook 和 Cookie Hook)
MIT License
693 stars 120 forks source link

关于拦截和私有api #53

Closed FoneG closed 3 years ago

FoneG commented 3 years ago

如果采用KKJSBridge/AjaxProtocolHook以下2个问题想请教作者

  1. 私有api想要上架,有什么安全的方案推荐吗
  2. KKJSBridgeAjaxURLProtocol为什么要拦截所有的请求,而不是有满足本地离线包的时候再做处理
karosLi commented 3 years ago

如果采用KKJSBridge/AjaxProtocolHook以下2个问题想请教作者

  1. 私有api想要上架,有什么安全的方案推荐吗 可以对字符串做混淆,比如做个base64转换,实际调用的时候,再转成真实字符串

  2. KKJSBridgeAjaxURLProtocol为什么要拦截所有的请求,而不是有满足本地离线包的时候再做处理 因为只要注册了 https 协议,就会导致所有的 ajax body 丢失,无法说针对部分请求不做拦截。

FoneG commented 3 years ago

感谢回复,刚刚跟我们的前端沟通了一下,发现大部分H5的大资源文件都没有走ajax,而是直接http请求的。请求有在这方面的研究,或者有什么想法吗

karosLi commented 3 years ago

http 不就是 ajax 吗。前端底层只要使用了 XMLHttpRequest 就是 ajax 请求。

karosLi commented 3 years ago

H5的大资源文件走的是 GET,但是H5里的主文档内的请求肯定走的 ajax,这个是跑不掉的。而一但使用了离线包,虽然可以拦截 H5 资源,但也同样拦截了 ajax,势必会造成 body 丢失

FoneG commented 3 years ago

感谢回复,只是前端表示需要缓存的就是这部分大资源文件,后面的ajax请求做缓存效果不大

karosLi commented 3 years ago

因为WK+离线包来提升H5首屏加载时,ajax 请求的 body(入参)都到不了服务器,这是大家都知道的共性问题。

ajax body 缓存的目的就是为了解决 body 丢失的问题。

你需要先去了解下 WKWebView+离线包方案吧,我说的,你目前还没有完全理解。