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