簡體   English   中英

通過 iframe 訪問域的 localStorage

[英]Accessing localStorage for a domain via iframe

example.com上,我有一個anotherexample.com加載了另一個 example.com 。 我遇到的問題是,如果我直接(在 iframe 之外)加載anotherexample.com ,localStorage 不會與 iframed anotherexample.com共享。

這有可能實現嗎?

通過訪問https://eskimo.dev/localstorage/可以看到該問題的示例,然后訪問https://eskimo.ooo/localstorage/iframe iframe 第一個鏈接。 iframe 沒有使用之前的 localStorage。

實際上我試過了,它對我有用(我先訪問/iframe但它對我兩種方式都有效):

圖片來自 https://eskimo.ooo/localstorage/iframe

圖片來自 https://eskimo.dev/localstorage/

圖片來自 DevTools

當然,當我禁用所有第三方 cookies 時,它沒有用。 這可能是原因嗎?

順便說一下,我使用的是 chrome 107.0。

不知道為什么它的行為不正常。 可能代碼片段在這里可能真的很有幫助。 但是通過 OP 中的上述鏈接示例。 它在那里不起作用的原因是:

  1. 有 2 個域:eskimo.dev 和 eskimo.ooo(兩者不同)。 當第一個域 eskimo.dev 打開時,本地存儲在瀏覽器中設置為參考 eskimo.dev 並且這將可訪問來源為“eskimo.dev”的頁面。
  2. 但是當打開eskimo.ooo(將iframe src設置為eskimo.dev的域)時,localStorage不會被共享,因為原始域是eskimo.ooo,因此無法訪問eskimo.dev的localStorage數據。

什么會起作用? :

  1. 如果你有eskimo.dev/localStorage(在瀏覽器中設置了localStorage)和
  2. 現在如果你打開eskimo.dev/localStorage/iframe(其中iframe src指向eskimo.dev/localStorage,這個頁面將可以訪問localStorage數據。),為什么?

因為,域源沒有改變,因此它可以訪問相同的 localStorage。

謝謝

它是一個完整的其他域,因此無法訪問其他域的localStorage。

但是,如果您可以控制這兩個域,則可以使用 javascript 事件通過域共享 localStorage。

你可以在這里看到更多: cross domain localstorage with javascript

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM