【发布时间】: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