1

我尝试了两种使用 Javascript 设置和读取 cookie 的不同方法,但存在相同的问题。

我第一次在新的浏览器会话中访问该页面并浏览设置 cookie 的页面时,第一页报告它正在成功设置 cookie 并将用户重定向到下一页。下一页检查 cookie,没有检测到它,然后启动回到第一页。我再次浏览第一页,神奇地第二页检测到 cookie 设置正确。

这对于测试来说没问题,但它是可怕的最终用户体验。我使用了 Mozilla 建议的处理 cookie 的代码以及 Quirksmode 上的代码。无论哪种方式,我都有相同的结果。我在 cookie 中设置 JSON 以供稍后参考。

设置cookie的页面:/setCookie.php

读取cookie的页面:/readCookie.php

使用 Quirksmode 代码设置 cookie 的代码:

createCookie('userJSON',JSON.stringify(dat));
window.location="/readCookie.php";

使用 Quirksmode 代码读取 cookie 的代码:

if( !readCookie('userJSON') ){
    window.location="/setCookie.php";
}

使用 Mozilla 代码设置 cookie 的代码:

docCookies.setItem("userJSON",JSON.stringify(dat),null,"/");
window.location="/readCookie.php";

使用 Mozilla 代码读取 cookie 的代码:

if( !docCookies.getItem('userJSON') ){
    window.location="/setCookie.php";
}

JSON 存储在 cookie 中,使用 jsonlint.com 测试为有效:

{
    "first_name": "",
    "last_name": "",
    "email": "email@myDomain.test",
    "phone": "",
    "state": "CA",
    "barcode": "",
    "session_id": "1338398988873_4981",
    "guest_id": "",
    "event_id": "",
    "queue": "0",
    "SEND_MMS": false,
    "SEND_EMAIL": false,
    "location": "web"
}

由于我没有更改 Mozilla 或 Quirksmode 代码,因此此处包含指向带有其代码的页面的链接。

Mozilla Cookie:https ://developer.mozilla.org/en/DOM/document.cookie

Quirksmode Cookie:http ://www.quirksmode.org/js/cookies.html

正如您从代码中看到的那样,路径被设置为“/”,因此它应该在域内的所有页面上都有效。对此问题的任何见解将不胜感激。

同样,这只是第一次在新的浏览器会话中访问页面时出现的问题(我可以通过退出浏览器,再次打开它并访问页面来轻松重现它),随后从同一个浏览器会话中运行这些页面流畅地浏览这些页面,而不会被引导回 setCookie.php 页面。

4

0 回答 0