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

标签 ajax post cookies safari mobile-safari

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

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

但是,自从我的用户开始升级到 iOS 11.4 后,那些使用 Safari 私有(private)模式的用户遇到了与我的网站“断开连接”的问题。

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

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

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

最佳答案

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

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

关于ajax - iOS 11.4 上的 Safari 不在 POST 请求中发送 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50852324/

相关文章:

php - 在 mySQL 查询中使用 $_POST

javascript - 获得 promise 值(value)

javascript - 互联网浏览器 : expiration date for cookies doesn't work

jquery - ajax函数不起作用

JavaScript 位置重定向导致 Chrome 上的 AJAX 调用停止

php - 使用 xmlhttprequest 将 javascript 变量传递给 PHP

javascript - 如何转换来自 http.post 响应 json 的数据以便我可以在我的应用程序中使用它?

javascript - Javafx WebEngine 读取安全 cookie

reactjs - ReactJS 应用程序中奇怪的 cookie 行为

javascript - 如何定期更新Ember的模型(例如在setInterval中)?