我們有一個在Facebook上運行的Web應用程序(即運行在不同域的iFrame中)。如果Safari用戶的Cookie和網站數據設置爲默認值「允許來自我訪問的網站」,我們通過localStorage.setItem存儲的數據就像sessionStorage一樣行事,即它在用戶當前會話之外不可用(即在用戶關閉後該選項卡)。如果我們將設置更改爲「始終允許」,就像Chrome,IE等一樣工作正常。Safari localStorage在會話之間不會持久
作爲一項測試,我們嘗試直接瀏覽器到我們的應用程序域(https://ourappname.appspot.com),它工作正常那裏。而且它也應該是一個真正的訪問過的網站,但是當回到Facebook的遊戲時,問題依然存在。
請注意,setItem調用成功,只是getItem不會在後續會話中返回任何內容。 (因此,當用戶爲Private Browsing且setItem調用本身失敗並且出現Quota Exceeded錯誤時,它不會如此)。
我們需要做些什麼來支持Safari,以便我們在Facebook上運行的應用程序可以使用localStorage作爲意圖在哪些數據將在會話之間生存?
奇怪的是,我剛剛在Safari 8.0.7(10600.7.12)中測試了「允許我訪問的網站」。我設置了一個localStorage密鑰,然後關閉瀏覽器(使用⌘+ Q),當我重新打開瀏覽器並使用localStorage.getItem時,它就在那裏。 – daviddoran
@daviddoran謝謝。您是否測試了與頂級網站不同的iFrame中運行的網站?我會編輯我的問題,使其更清楚。 – leontx