MagicWebViewWebP icon indicating copy to clipboard operation
MagicWebViewWebP copied to clipboard

NSURLProtocol拦截WKWebView请求后,Post参数丢失

Open jiwenyi163 opened this issue 6 years ago • 2 comments

NSURLProtocol拦截WKWebView请求后,所有从WKWebView发出的ajax Post请求的参数丢失。

jiwenyi163 avatar Jan 09 '19 09:01 jiwenyi163

我也碰到同样的问题,请问您现在解决了嘛?

karise-guo avatar Oct 16 '19 02:10 karise-guo

WebKit 进程是独立于 app 进程之外的,两个进程之间使用消息队列的方式进行进程间通信。比如 app 想使用 WKWebView 加载一个请求,就要把请求的参数打包成一个 Message,然后通过 IPC 把 Message 交给 WebKit 去加载,反过来 WebKit 的请求想传到 app 进程的话(比如 URLProtocol ),也要打包成 Message 走 IPC。出于性能的原因,打包的时候 HTTPBody 和 HTTPBodyStream 这两个字段被丢弃掉了,这个可以参考 WebKit 的源码,这就导致 -[WKWebView loadRequest:] 传出的 HTTPBody 和 NSURLProtocol 传回的 HTTPBody 全都被丢弃掉了。

chengjiangbin avatar Nov 29 '19 02:11 chengjiangbin