So I'm toying around with HTML 5 and the localStorage and I'm noticing that my values only get stored when I run the page in Firefox on the local host (i.e. http://127.0.0.1:8000/test/index.html), but when I run the file locally (file:///C:/test/index.html) my values don't get stored. Safari 4 has no problems with both setups. So does anybody know if this is by design -> DOM Storage on the Mozilla Developer Center
(Firefox 2 permitted access to storage objects higher in the domain hierarchy than the current document. This is no longer allowed in Firefox 3, for security reasons. In addition, this proposed addition to HTML 5 has been removed from the HTML 5 specification in favor of localStorage, which is implemented in Firefox 3.5.)
Or if there is a workaround?
I wonder because offline storage that works only online sounds silly :P
If anybody wonders, the code is as easy as it gets:
function save()
{
localStorage.setItem('foo','bar');
}
function load()
{
var test = localStorage.getItem('foo');
alert(test);
}
It seems a bug: Bug 507361 - localStorage doesn't work in file:/// documents
Hope is fixed soon!
2011-09-13: Bug fixed, implemented in 'Mozilla8'. I tested this with Firefox 8 and it works now.
Well, the linked document does say that
I don't want to claim that I understand 100% what that means, but the bit in brackets would suggest that the URL needs to have certain properties - in particular that the scheme and hostname are what Firefox considers an HTML 5 origin. I suspect that
file:///
URLs don't match this, while yourhttp://127.0.0.1/
does.edit: Looking at the W3C's description of the Origin property, step 7 looks like it might be causing the problem. Depending on how the
localStorage
handling is implemented, it may be expecting a 3-tuple as returned by step 12, but for afile://
URL the return value may be just about anything.So, er, I suppose it is by design.On reflection, chances are that this isn't really by design; there's no reason whylocalStorage
shouldn't work forfile://
URLs. It might just be a case of the output of one browser-specific implementation not matching the expectations of another.As for workarounds, would
globalStorage
not do what you want here?