Iframe localStorage on Safari and Safari mobile

2019-02-04 02:45发布

问题:

I have a javascript function that will execute in an iframe of my page to set a localstorage. On another page, another iframe hosted on the same domain will try to read the value. A schema below :

Domain A
  |---- iframe - Domain B => Set localStorage

Domain C
  |---- iframe - Domain B => Read localStorage

Both localStorage function (Read and Write) are hosted on the same Domain (Domain B) On Safari and Safari mobile, the value is not transmitted from iframe in page A to iframe in page C. It's working fine on Chrome and Firefox. In Safari, it's acting as if the localStorage of the iframe is specific to the top page domain and not transmitted accross pages, even if the iframe domain is the same. Does anybody is experiencing the same problem with local storage on safari ?

回答1:

The issue with Safari is caused by the "block cookies and other website data" preference which is set to "From third parties and advertisers" by default.

Update: on Safari 8, this option is "Cookies and website data: Allow from websites I visit".

The expected behaviour is only available if the user sets this option to "Never", as seen in the following picture: http://i.stack.imgur.com/AP4ed.png

It's unlikely that there is a loophole unfortunately - the intention of the setting is clear.