我尝试了两种使用 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 页面。