karosLi / KKJSBridge

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

url参数包含中文,利用 requestId 生成新的 url就会有问题 #65

Open firecolen opened 3 years ago

firecolen commented 3 years ago

//利用 requestId 生成新的 url _KKJSBridgeXHR.generateNewUrlWithRequestId = function (url, requestId) { ... var search = aTag.search ? aTag.search : ""; ... url = orignAction.replace(search, "").replace(hash, ""); ..... var newAction = url + aTag.search + aTag.hash; return newAction; };

如果url的参数包含中文,search拿到的是编码后的数据,replace替换方法就不起作用,客户端拿到的url就存在2个?

karosLi commented 3 years ago

你是 POST 包含中文参数?

firecolen commented 3 years ago

GET请求,例如http://aa.com?city=北京

karosLi commented 3 years ago

你有试过 URLEncode 吗

firecolen commented 3 years ago

用URLEncode可以解决问题,但是旧项目很多地方存在这种请求,只能在KKJSBridgeAJAXProtocolHook.js统一处理, var orignAction = encodeURI(decodeURI(url)); 这样是否能解决问题呢?

firecolen commented 3 years ago

用URLEncode可以解决问题,但是旧项目很多地方存在这种请求,只能在KKJSBridgeAJAXProtocolHook.js统一处理, var orignAction = encodeURI(decodeURI(url)); 这样是否能解决问题呢?