karosLi / KKJSBridge

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

+canInitWithRequest: return No,body丢失问题 #29

Closed dhui68 closed 4 years ago

dhui68 commented 4 years ago

KKJSBridgeAjaxURLProtocol的 +canInitWithRequest:,当return NO的时候,恰好该请求为POST这类请求,body丢失,这中情况-startLoading方法不会执行的,取不到缓存body的, 针对这场景,我尝试在WKWebView的decidePolicyForNavigationAction:的方法里进行KKJSBridgeRegisterScheme 和 KKJSBridgeUnregisterScheme,WKWebView在iOS13.5.1不起作用,有兼容问题。 解决方案:把取缓存步骤提前到+canInitWithRequest:方法里,判断request为NSMutableURLRequest时,赋值body 或者您有其他更好的思路?

karosLi commented 4 years ago

即使是放在+canInitWithRequest:里,像你描述的,是返回NO,那说明没有body缓存,那提前到这个方法重新赋值body也是有问题的。应该还是要从源头解决,所以你是哪类 POST 请求没有拦截到?