我有一个带Angular 的离子6应用程序,我正在使用外部API登录用户并检索一些数据。
当用户进行身份验证时,服务器使用Set-cookie
报头进行响应;浏览器和Android应用程序都运行良好。
在iOS上,响应中接收到的set-cookie标头看起来什么也没做。
我也尝试在我的app.component.ts
上使用cordova-plugin-wkwebview-inject-cookie:
this.platform.ready().then(() => {
if (this.platform.is('ios')) {
wkWebView.injectCookie(environment.config.baseUrl, '/');
}
});
但是cookie没有被存储,所以每个下一个请求得到401响应:
1条答案
按热度按时间k5hmc34c1#
经过大量的搜索这个问题,我发现这个线程在电容器github问题;
长话短说:这不是一个问题,实际上这是苹果做出的一个安全决定,就像托马斯Vidas在同一个帖子中说的那样:
这有几个原因,最主要的一个是它是苹果在iOS 14和更高版本上的一个故意更改,称为“智能跟踪预防”(ITP),它禁用所有未列为应用绑定域的域上的cookie。这不是由于capacitor://协议。ITP使它如此文档化。cookie调用旨在静默失败,以防止用户跟踪。如果您的server.hostname和应用绑定域设置正确,它可能会工作,但可能会产生其他意想不到的后果(如苹果可能拒绝您的应用),所以我们不建议它。
因此,我建议您阅读整个帖子,从中获得一些见解,因为电容器团队认为没有解决方案。
希望对你有帮助!