【问题标题】:Can't write cookies on one page, Safari iOS无法在一页上写入 cookie,Safari iOS
【发布时间】:2013-10-06 22:28:00
【问题描述】:

我正在构建一个需要注册和登录的网站。

一旦您注册,cookie 就会写入您的浏览器以验证您的会话。在登录期间,完全相同的 cookie 会写入您的浏览器。我在注册和登录时使用完全相同的功能和技术来编写 cookie。

问题出在这里:

在移动设备上(至少对于 iOS 版 Safari),cookie 不会在注册过程中写入,但在登录过程中可以正常工作。 (在桌面浏览器中,两者都可以正常工作)。

你应该知道:

移动网站不会重定向到不同的 URL,也不会加载任何不同的 javascript。它只是使用媒体查询 (CSS) 来更改 CSS。

这是我尝试过的故障排除:

已验证我的“set_cookie”功能可在移动设备上运行。将我的“阻止 cookie”设置为“从不”。通过每次调用函数时记录 document.cookie 来验证 set_cookie 函数正在被调用(旧的/注销的 cookie 被记录到控制台,但根本没有写入新的 cookie)。在 iPad 版 Safari 上测试,效果非常好。

可能相关的事情:

无法在 iPhone 版 Safari 上运行的部分是尝试从站点根目录 / 创建 cookie,但是登录页面(它在 iPhone 上运行的位置)位于 /login.html。两者是同一个域。此外,我已经验证服务器正在成功创建新用户并返回成功响应。这些请求是通过 AJAX 发出的,并将一个 JSON 对象返回给 javascript。

TL;DR:

Cookie 不会从 iPhone 版 Safari 上的特定页面写入。此操作在其他任何地方都能成功运行。相同的set_cookie 函数被全面使用,并且在 iPhone 版 Safari 上的其他页面上正常工作。移动版在同一个域上,不改变javascript,只改变CSS。

有什么想法吗?谢谢!

【问题讨论】:

  • 永远不要相信 cookie。某些浏览器已禁用它们。使用会话,或添加获取参数,或任何其他方法来帮助规避此问题。

标签: javascript iphone ios mobile cookies


【解决方案1】:

发现解决此问题的方法是进行一些内部/服务器端重组。目前尚不清楚仅在 iPhone 上导致问题的原因,但是,我能够绕过它。如果其他人遇到这个问题,我会感到惊讶。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    相关资源
    最近更新 更多