Capacitor项目iOS端WKWebView第三方Cookie写入失败解决方案问询
你当前仅配置了hostname项,还需补充以下配置和操作:
- 首先在
capacitor.config.json(或capacitor.config.ts)的server配置中添加iosScheme字段,指定为https,避免默认自定义scheme导致Cookie同域校验失败:
"server": { "hostname": "subdomain.example.com", "iosScheme": "https" }
- 在iOS原生项目的
AppDelegate中添加Cookie权限配置,开启WKWebView的Cookie接收策略:
打开ios/App/App/AppDelegate.swift,在didFinishLaunchingWithOptions方法中加入以下代码:
import WebKit func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // 保留原有代码,新增以下配置 let webConfig = WKWebViewConfiguration() webConfig.websiteDataStore.httpCookieStore = WKHTTPCookieStore() HTTPCookieStorage.shared.cookieAcceptPolicy = .always webConfig.preferences.setValue(true, forKey: "allowFileAccessFromFileURLs") // 保留原有return逻辑 return true }
- 确认前端写入Cookie时的属性配置符合iOS端要求:
- Cookie的
Domain必须严格匹配你配置的subdomain.example.com - 必须指定
Path=/ - 不要设置
SameSite=Strict,建议设置为SameSite=Lax或者不配置该属性
- Cookie的
- 跨域请求场景下额外补充配置:
- 前端请求头开启
credentials: include - 服务端响应头返回
Access-Control-Allow-Credentials: true,且Access-Control-Allow-Origin不能设置为通配符*,必须对应你的实际域名
- 前端请求头开启
- 所有配置修改完成后,必须完全清理Xcode构建缓存(快捷键Option+Command+Shift+K),卸载设备上已安装的旧版App后重新编译运行,避免缓存导致配置不生效。
内容的提问来源于stack exchange,提问作者iosDev_1205
相关产品推荐
相关产品推荐

