【问题标题】:Iframe chrome : Uncaught DOMException: Failed to read the 'localStorage' property from 'Window': Access is denied for this documentiframe chrome:未捕获的 DOMException:无法从“Window”读取“localStorage”属性:此文档的访问被拒绝
【发布时间】:2021-05-13 22:50:37
【问题描述】:

我创建了一个 JavaScript 小部件。我使用 localstorage 来设置和获取window 的属性。

当我在 Chrome 中打开该小部件时,它会引发错误:

未捕获的 DOMException:无法从“Window”读取“localStorage”属性:拒绝访问此文档。

如果我在浏览器中允许第三方 cookie,它就可以正常工作。问题是我不能手动允许每个用户的第三方 cookie。有什么办法解决这个问题?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您应该考虑改用此浏览器 API:

    https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

    由于本地存储只与特定域相关,因此不能跨域使用。

    例如:如果iframe域为“www.aaa.com”,页面域为“www.bbb.com”,则iframe无法访问页面相关的本地存储。如果它们在同一个域中,则没有问题。

    关于这个论点的完整解释可以在这里找到:

    https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

    【讨论】:

    • 如果你不控制父域,我是否必须使用除localStorage之外的东西?
    • 很好的后续问题。我不明白为什么跨域 iframe 无法访问自己的 localStorage。访问父域的localStorage应该只是一个安全问题。 postMessage 与 localStorage 无关
    • @Phil,因为没有“iframe localStorage”,它是基于源的。检查这个stackoverflow.com/a/34002337/8534482
    猜你喜欢
    • 2020-09-15
    • 2022-10-30
    • 2021-12-07
    • 2015-08-09
    • 2015-04-06
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多