karosLi / KKJSBridge

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

Response redirect 302 #14

Closed aofeng2009 closed 4 years ago

aofeng2009 commented 4 years ago

当服务返回302重定向后,WKWebView 并不能拦截到响应,所以此时下发的cookie是没办法干预的。 不知道这里是否有优化的空间?

karosLi commented 4 years ago

image 你好,我刚才用服务器端302重定向后,是可以正确处理cookie的。

在发生302重定向时,会进入该方法,而且此时,WKWebView里的 Cookies.binarycookies 已经持久化了响应头里的 cookie。然后此时,可以在下面的方法里可把WKWebView里的 Cookies.binarycookies 同步给 NSHTTPCookieStorage。

aofeng2009 commented 4 years ago

image 你好,我刚才用服务器端302重定向后,是可以正确处理cookie的。

在发生302重定向时,会进入该方法,而且此时,WKWebView里的 Cookies.binarycookies 已经持久化了响应头里的 cookie。然后此时,可以在下面的方法里可把WKWebView里的 Cookies.binarycookies 同步给 NSHTTPCookieStorage。

  • (void)webView:(WKWebView )webView decidePolicyForNavigationResponse:(WKNavigationResponse )navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler { }

你可试试你的demo,在KKWebView 的 decidePolicyForNavigationResponse处设置一个端点。打印下response,那个response对应的url是index的不是 index302的。

karosLi commented 4 years ago

这个WebView自己的机制,遇到302,重新进入decidePolicyForNavigationAction方法,decidePolicyForNavigationResponse 只会接收重定向后的 index

aofeng2009 commented 4 years ago

@karosLi 是的,不过有的服务是在302响应的同时,下发cookie。暂不关心跳转之后(index)的response,302对应的response我们还是没办法处理的。

karosLi commented 4 years ago

嗯,这种目前还处理不了,最好还是让index response的cookie包含302 response 的cookie