【已解决】koca_mobile 打包 App,Cookie无法正常使用

项目名称:宏信证券
KOCA版本 :koca_mobile 0.0.1
KOCA模块 :H5 打包成App
模块版本 :H5 打包成App
场景 : 移动端H5 打包成App发版使用,原始版本没有使用cookie与加密;最近一次需求要求有加密,后端且统一了PC与mobile的访问接口。
问题 :单独的H5正常使用,但是使用Hbuilder打包成App,接口就请求失败
报错细节 :请求响应错误
尝试解决方案:初步断定是App下的webview无法像浏览器那样正常使用cookie。使用过Okhttp 在App端做jsbridge,并把cookie交给Okhttp访问,访问能成功;但此方案改动了原koca_mobile 请求底层,不妥,且错误响应需要进行一一适配。其他方案还在和后端同事商量

UNIAPP 不支持自动保持 cookie, 需要手动做处理。
可以在网络框架的 response 和 request 拦截器内做统一处理,不需要一一适配。

类似以下 token 的处理方式:

响应拦截器

export default function responseInterceptor<T>(url, response): Promise<Result> {
	if ((response.statusCode || response.status) == 200) {
		let data = response.data;
		const code = data.code
		if (code === "0" || code === 0 || code == '000000') {
            // 如果是发短信验证码接口
			if (url.indexOf(urls.loginSms) != -1) {
				uni.setStorageSync("_session", { token: response.header.token || "" });
			}
			// 如果是登录接口
			if (url.indexOf(urls.login) != -1) {
				const sessoion = uni.getStorageSync("_session");
				if (sessoion) {
					sessoion.token = response.header.token;
					uni.setStorageSync("_session", sessoion); // 保存
				}
			}
		}
		
	return Promise.resolve(result);
}

请求拦截器

export default function requestInterceptor(options: Uniapp.RequestOptions) {
    // ....

	// 附带鉴权的token
	const session = uni.getStorageSync('_session')
	options.header.token = (session && session.token) || ''

    // other code ....

	return options
}

已换其他方法