You can store small amounts of data in cookies, but as these are sent to the server on every HTTP request, it's not a good idea to store much in them. Typically they just store a key used to index the data on the server. If the server is offline, you can still access the cookies from local scripts, but that's not much help if they just contain a unique ID.
One of the interesting things about this is that it highlights the fact that HTML 5 is moving beyond the single-page model. The session storage object has well-defined behavior when multiple scripts, associated with multiple browser windows, try to access it. You can even use it as a simple way of communicating between browser windows that are part of the same session (this was previously difficult to do with any more granularity than telling one window to load a new URL). Every time you modify a storage object, every window that has access to it receives a storage event. This gives you a very simple mechanism for inter-window communication. You can set a value for a key in the session object, and every window will then receive a notification of this change, including the old and new values.