【问题标题】:iOS 13 beta WebKit breaks support for cookiesiOS 13 beta WebKit 打破了对 cookie 的支持
【发布时间】:2019-08-27 11:01:19
【问题描述】:

我有一个基于 Cordova 的工作应用,目前拥有相对较大的用户群。到目前为止没有问题,除了this one Apple 不会修复。不过没关系,我们创造了丑陋的解决方法只是为了继续前进......

但是,iOS 13(测试版 8)来了,我们了解到此版本中的 WebKit根本不会将 cookie 发送回服务器。不是一次,不是一开始就 - 从来没有。 iOS 13 的发布提前了几周,当所有用户都升级到 iOS 13 并且我们的应用停止工作时,我根本不知道该怎么办......

我们使用 cookie 进行会话管理,没有什么花哨的、基于经典旧 Jetty 的后端。我为第一次使用问题所做的解决方法是在每个请求上将 jsessionid 参数附加到 URL,然后在服务器端将其剥离,转换为 cookie 并进一步发送到链中。假设 WebKit 停止发回 cookie,我不知道一直使用它是否安全。以下是一些待处理的相关错误,但 Apple 甚至不太可能查看它们:

有人遇到过类似的问题吗?你如何解决?

【问题讨论】:

    标签: cordova webkit wkwebview ios13


    【解决方案1】:

    添加这个插件https://github.com/oracle/cordova-plugin-wkwebview-file-xhr,它拦截XHR请求并由这个插件处理它们。 它对我有用。

    【讨论】:

    • 我们的应用是基于Axios http客户端的,是一个成熟的应用,我不明白怎么可能替换所有通过这个workaround插件的请求..还是谢谢大家!
    • @Dima 只需添加这个插件,仅此而已,你会看到神奇的。如果您使用的是 http,而不是 https,则必须将 <preference name="InterceptRemoteRequests" value="all" /> 添加到 config.xml
    • @DoctorWho - 谢谢!是的,它似乎完全解决了我们的问题。神奇地。我不太明白这个插件实际上做了什么。它似乎是这种情况的救星。但我不完全确定用插件修复错误是否是个好主意。希望 WebKit 项目或 Apple 的任何人都可以插话并澄清情况..
    【解决方案2】:

    我的 ionic 3 应用程序也遇到了同样的问题。 我找到了解决方法:

    通过将来自 rxjs 的 API 调用替换为原生的目标 C http 调用,cookie 可以很好地从后端的 http 响应中保留下来。 也许,你可以试试这个......

    【讨论】:

    • 感谢您分享此内容。不幸的是,我们不是使用 Ionic,而是使用普通的 Cordova,最终将会话 ID 作为 URL 的一部分发送并在服务器端调整会话管理。令人难以置信的是,Apple WebKit 中似乎没有人关心。甚至有可能在性能下降的情况下进行重大发布,这超出了我的范围。..
    【解决方案3】:

    已由WebKit team 确认并修复,并在 iOS 13.2 中发布。我测试了 beta 版本,它现在似乎可以工作了。

    【讨论】:

    • 你知道我们什么时候可以向公众发布 iOS 13.2 吗?我找不到任何有用的信息。我要问的是值得使用那个插件还是我可以等一下?
    猜你喜欢
    • 2017-12-16
    • 2019-12-09
    • 2012-06-10
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    相关资源
    最近更新 更多