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

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

【参考方案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”,它是基于源的。检查这个***.com/a/34002337/8534482

以上是关于iframe chrome:未捕获的 DOMException:无法从“Window”读取“localStorage”属性:此文档的访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

防止iframe滚动捕获youtube iframe嵌入chrome

document.domain 的 Chrome 解决方案

Chrome 未正确显示 iframe 和/或过渡

当 iframe 在拖放功能中移动时,Chrome 中的 Dragend 事件未触发

Vimeo 视频在本地工作,但不能在实时网站上工作:未捕获的安全错误:iframe 的来源错误

未捕获的类型错误:无法读取 chrome 扩展中未定义的属性“本地”