Subcookies V2

šŸ‘‰ Whoa! Please note that this post is 16 years old. The views expressed within might have become outdated.

My Subcookies article from May the 27th of last year has proven to be my most popular bit of writing.

A year after publishing, "C" has requested an update.

I have now rewritten my cookies script, fixing some issues pointed out by "C", and added some security as pointed out by Jim Thomson.


Notable changes:

Note; for a complete rundown of the original script, read Subcookies.

  • The subcookiejar.fetch () method now returns an object literal (or, as the cool kids say, ā€œJSONā€) if the second parameter is left undefined. This means that by doing the followingā€¦
  // bake a new cookie
  subcookiejar.bake ('admin', {
    name: 'Harmen',
    age: 23,
    homepage: 'http://www.whatstyle.net'
  }, 2);

  // fetch it
  var admin = subcookiejar.fetch ('admin');

ā€¦you can fetch the adminā€™s values by doing something like this:

  alert (admin.name);
  alert (admin.age);
  alert (admin.homepage);
  • If the second parameter is given, however, subcookiejar.fetch will return either null if the requested subcookie is not available, or just that subcookie.

  • Also, it is now possible to append to existing cookies. If, after executing the code above, I execute the following codeā€¦ ``` subcookiejar.bake (ā€˜adminā€™, { city: ā€˜Harderwijkā€™, country: ā€˜The Netherlandsā€™ }, 2);

    
     ...the result will be a combined object containing both the new data and the existing data: ```
    {
     name: 'Harmen',
     age: 23,
     homepage: 'http://www.whatstyle.net',
     city: 'Harderwijk',
     country: 'The Netherlands'
    }
    

    Note that you will overwrite the existing values if you use this technique.

Other changes consist purely of improving some code, comments and security checks.

So, the new version can be downloaded here. Go and grab it, itā€™s free!

As always, Iā€™d love to hear feedback. If you have any, do let me know.
And C, sorry to keep you waiting ;).