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

Nun*_*uno 5 cookies safari ajax post mobile-safari

多年来我一直在使用相同的代码,到目前为止,在每个浏览器上都运行得很好:

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

然而,自从我的用户开始升级到 iOS 11.4 以来,那些使用 Safari 私人模式的用户遇到了与我的网站“断开连接”的问题。

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

但是,这不会影响 GET 请求本身。即使新的 cookie 是作为 ajax POST 请求的一部分设置的,它们仍保留相同的 cookie(因此也是相同的会话)。就像那些 ajax POST 请求被“沙盒化”一样,不会影响其他任何事情。

有任何想法吗?这是 iOS 11.4 上 Safari 的错误吗?

Jos*_*osh 2

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

不确定这是否是您的问题,但听起来非常相似。希望这可以帮助!