iOS 11.4 上的 Safari 不在 POST 请求上发送 cookie

Safari on iOS 11.4 not sending cookies on POST requests

多年来我一直在使用相同的代码,到目前为止,所有浏览器都运行良好:

$.ajax({
    url: '/test.php',
    data: parameters,
    dataType: 'html',
    type: 'post'
})

但是,自从我的用户开始升级到 iOS 11.4 后,使用 Safari 私有模式的用户在我的网站上遇到 "being disconnected" 问题。

这是因为 ajax POST 请求显然没有发送任何 Cookie。作为该 POST 请求的一部分创建了一个全新的会话(创建了新的 cookie,等等)。

但是,这不会影响 GET 请求本身的任何内容。它们保留相同的 cookie(因此也是相同的会话),即使新的 cookie 被设置为 ajax POST 请求的一部分。就像那些 ajax POST 请求是 "sandboxed",不影响任何其他东西。

有什么想法吗?这是 iOS 11.4 上 Safari 的错误吗?

我们解决了类似的问题,发现它实际上与 Service Workers 有关。据我所知,这是 Safari 最新版本的 Service Workers 实现中的一个错误,导致某些 cookie 无法在私有模式下传递 POST。目前,我们已经禁用了我们的 Service Worker,站点功能已经为这些用户恢复正常。

不确定这是否是您的问题,但听起来很相似。希望这对您有所帮助!