If I have a cookie in a subdirectory, this cookie is read from even when I'm in the root. When I write the cookie, the cookie's path is the root. So reading and writing goes to different cookies (same name, different path).
Here's how: When I browse to a directory on my webserver it automatically loads the index.html file located in that directory. Example: http://mywebserver/CookieTest, no slash at the end. If i set a cookie and read it, it is changed every time. If you view the cookie information (with i.e. FireCookie), you see the cookie (in the root) beeing changed. This is good. Now if I browse to: http://mywebserver/CookieTest/, the same index.html file is loaded. If I set a cookie and read it, it is changed every time. If you view the cookie information (with i.e. FireCookie), you see the cookie (in the /CookieTest/) beeing changed. This is good. Now if you go back to http://mywebserver/CookieTest, the same index.html is loaded. Now if you set the cookie, the cookie in the root (/) is set, but the cookie in the directory (/CookieTest/) is read. Now there's a difference between reading and writing the Cookie. This is *not* good. Maybe it's not good practice to use a url without /. Should I have my webserver append it always? If so, then how? I think the problem boils down to Cookie.read that does a match and finds the 'wrong' cookie. I'll try to see if I can get more information on this. I don't know if this is a bug, but it did surprise me to. I've tried to setup a mooshell example, but mooshell always puts the slash at the end, so it doesn't work. But you can find the test at: http://www.mootools.net/shell/3UQkR/2/. Here's a sample index.html file. You have to put this in a directory on your webserver i.e. CookieTest together with mootools.js. ============ index.html ================ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http:// www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script src="/CookieTest/mootools.js" type="text/javascript"></ script> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta name="generator" content="Woomla"> <title>Cookie Test</title> <script type="text/javascript"> function info(text) { $('info').appendText(text); $('info').grab(new Element('br')); } function getTheCookie() { var value = Cookie.read('cookietest.key'); info('get: ' + value); } function setTheCookie() { var value = new Date().getTime(); info('set: ' + value); Cookie.write('cookietest.key', value, {'duration': 3600}); getTheCookie(); } window.addEvent('domready', function () { $('set').addEvent('click', setTheCookie); getTheCookie(); }); </script> <style type="text/css"> <!-- #info { border:1px dashed black; width:90%; padding:5px; } //--> </style> </head> <body> <button type="button" id="set">set</button> <br /> <br /> <div id="info"></div> </body> </html>
