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
相关产品推荐
相关产品推荐

