Cordova应用iOS端GET请求丢失服务端session cookie问题咨询
问题根因
你遇到的iOS端GET请求不带session cookie的问题,核心是使用的cordova-plugin-wkwebview-file-xhr插件默认仅拦截处理XHR类型的POST请求,GET类静态资源请求不走插件的请求逻辑,直接调用WKWebView原生请求能力,而你配置了自定义scheme app://localhost作为应用入口,WKWebView原生请求和插件XHR请求的cookie存储空间是隔离的,导致GET请求无法读取到登录时写入的session cookie。
可行解决方案
- 方案一:调整插件配置,适配所有请求类型
在config.xml的iOS配置块中新增如下配置,让插件拦截所有类型的远程请求,复用同一套cookie存储:
同时移除项目中残留的<preference name="InterceptRemoteRequests" value="all" />cordova-plugin-whitelist插件,cordova-ios 6.2.0已经内置了域名白名单能力,旧插件和现有版本冲突会导致cookie读写异常。 - 方案二:替换请求处理插件
卸载cordova-plugin-wkwebview-file-xhr,换成适配性更好的cordova-plugin-ios-xhr,该插件针对cordova-ios 6+的自定义scheme场景做了适配,所有HTTP方法的请求都会自动携带同域cookie,不需要额外修改配置。 - 方案三:调整服务端鉴权逻辑绕开cookie限制
图片资源的鉴权不用依赖cookie,改为登录后下发临时访问签名,加载图片时将签名参数拼接在资源URL后,服务端校验签名有效性即可,该方案不存在跨端兼容问题,也不会受webview的cookie机制限制。
额外注意事项
后端设置session cookie时,SameSite属性不要配置为Strict,可改为Lax或不设置,同时确保Domain配置与你的接口域名一致,避免跨域cookie写入失败。
内容的提问来源于stack exchange,提问作者hypnomaki
相关产品推荐
相关产品推荐

