114

I read some documentation on sessionStorage and localStorage, but I don't understand what the scope is: the domain, a specific page?

For example, if I have the following pages:

http://example.com/products.aspx?productID=1

http://example.com/products.aspx?productID=2

http://example.com/services.aspx?serviceID=3

And if on each of the above pages I run (with idvalue being the value in the querystring):

localStorage.setItem('ID',idvalue);

Am I going to end up with 3 different values stored, or are the values going to overwrite each other?

jdphenix
  • 15,022
  • 3
  • 41
  • 74
Christophe
  • 27,383
  • 28
  • 97
  • 140

2 Answers2

164

Session Storage:

  1. Values persist only as long as the window or tab in which they stored.

  2. Values are only visible within the window or tab that created them.

Local Storage:

  1. Values persist window and browser lifetimes.

  2. Values are shared across every window or tab running at the same origin.

So, by reading and understanding this each key-value pair is unique for each domain, because local storage persist values across window or tab.

Talha
  • 18,898
  • 8
  • 49
  • 66
103

The values are going to overwrite each other. Each key-name pair is unique for a protocol and domain, regardless of the paths.

The affected domain can be changed via the document.domain property.

  • sub.example.com -> example.com is possible (subdomain)
  • sub.example.com -> other.example.com is not possible

References:

  • MDN: Web Storage API: "sessionStorage maintains a separate storage area for each given origin [...]"
  • MDN: Origin: "Two objects have the same origin only when the scheme, hostname, and port all match."
mltsy
  • 6,598
  • 3
  • 38
  • 51
Rob W
  • 341,306
  • 83
  • 791
  • 678
  • Thanks! Would you have a reference to recommend, that explains localStorage in detail? – Christophe Mar 16 '12 at 18:27
  • 2
    @Christophe [MDN: Storage](https://developer.mozilla.org/en/DOM/Storage) and [W3c: Web Storage](http://dev.w3.org/html5/webstorage/). – Rob W Mar 16 '12 at 18:30
  • 1
    well, even after reading the MDN page I still can't find the answer to my question... Anyway, thanks again! – Christophe Mar 16 '12 at 18:37
  • 1
    @Christophe I have verified my statements a while back by viewing the sqlite(3) database called `webappsstore.sqlite` in my Firefox profile directory, using query `SELECT scope FROM webappsstore2;`. The result is the reverse of the domain, followed by the non-reversed protocol, and sufficed with the port, eg: `gro.allizom.snodda.secivres.:https:443`. As you can see, there's no mention of any path. – Rob W Mar 16 '12 at 18:44
  • 1
    Here's documentation of the `document.domain` API mentioned: https://html.spec.whatwg.org/multipage/browsers.html#relaxing-the-same-origin-restriction – mltsy Feb 10 '17 at 15:40
  • The [MDN: Web Storage API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API) doc does now specify: "sessionStorage maintains a separate storage area for each given origin [...]", where the "origin" is as defined here: [MDN: Origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) - i.e. sessionStorage and localStorage are partitioned by `scheme + hostname + port` – mltsy May 26 '23 at 15:03