我正在编写第三方原生JavaScript组件,该组件在客户端上使用localStorage。
查看Chrome DevTools上的“资源”选项卡时,我看到我的localStorage条目存储在客户端域下。例如:让我们说我的文件来自cdn.3rd.com并在stackoverflow.com上用作资源,而我的localStorage条目保存在http://stackoverflow.com商店下。
但是,查看不同的网站,我发现通常第三方localStorage条目会保存到第三方域名下的商店。例如在bbc.com中,我看到了iperceptions.com的商店,而在cnn.com,有一个outbrain.com的商店。
那么如何在客户端页面上为我自己的域打开localStorage商店?
答案 0 :(得分:2)
由于以下限制,您无法访问其他第三方网站的localStorage。
HTML5不允许对localStorage进行跨域访问
基本上,<TextBlock HorizontalAlignment="Left"
TextWrapping="Wrap"
Text="{Binding JobData.JobName}"
VerticalAlignment="Top"
Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=ActualWidth}">
是特定于源的资源,因此禁止从其他站点访问localStorage。在HTML5草案的早期阶段,有一个localStorage
完全允许跨域访问,但由于安全问题,它已被删除。因此,WebAPI目前非常重视安全性。
已知的解决方法 - 仅在您拥有目标网站的管理权限时才有效
有一个非常nice article which demonstrates how to cross-origin access localStorage with iframe。但是,此方法要求您修改目标站点的客户端脚本,以通过邮件发布将iframe中的localStorage内容中继到您的站点。因此,如果没有对目标站点的完全管理访问权限,则无法执行此操作。