You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cordova-iOS自定义scheme下Cookie无法存储读取问题求助

Cordova iOS 自定义Scheme下Cookie存储读取解决方案

针对你使用自定义scheme app://localhost 后Cookie无法存储的问题,结合Cordova 12.0.0和cordova-ios 7.1.1的版本特性,以下是可行的解决方法:

1. 启用WKWebView的Cookie存储配置

cordova-ios 7+默认使用WKWebView,需要在config.xml中添加以下偏好设置,解除WKWebView对自定义scheme下Cookie存储的默认限制:

<!-- 启用WKWebView的Cookie存储功能 -->
<preference name="WKWebViewCookieStorageEnabled" value="true" />
<!-- 若涉及跨域请求,开启第三方Cookie支持 -->
<preference name="WKWebViewThirdPartyCookieStorageEnabled" value="true" />

2. 调整js-cookie的参数设置

自定义scheme app:// 不属于HTTPS协议,同时需要明确绑定Cookie到localhost域名,修改你的Cookie设置代码:

import Cookies from 'js-cookie';

Cookies.set('test', 'value', { 
  expires: 7, 
  path: '/',
  domain: 'localhost', // 指定Cookie绑定到当前主机名
  secure: false // 必须设为false,app://非HTTPS协议,true会导致Cookie被拒绝存储
});
console.log(Cookies.get('test'));

如果省略domain,Cookie可能无法正确关联到app://localhost;secure: true会因为非HTTPS环境被浏览器拒绝存储。

3. 排除库问题:用原生document.cookie测试

如果上述方法无效,先绕过js-cookie,用原生document.cookie验证是否能正常存储:

// 设置Cookie
document.cookie = "test=value; expires=" + new Date(Date.now() + 7*24*60*60*1000).toUTCString() + "; path=/; domain=localhost";
// 读取Cookie
console.log(document.cookie);

如果原生方法有效,说明是js-cookie的参数配置问题;如果原生方法也无效,回到第一步确认config.xml的配置是否生效。

4. 补充WebView权限配置

在config.xml中添加以下配置,消除潜在的权限限制:

<preference name="AllowUniversalAccessFromFileURLs" value="true" />
<preference name="AllowFileAccessFromFileURLs" value="true" />

虽然当前使用的是自定义scheme而非file://,但这些配置可以避免WebView的权限拦截。


内容的提问来源于stack exchange,提问作者Yuriy Halas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:15:09