index.html文件目前看起来像这样:
<!DOCTYPE html><html><head style="overflow: hidden; margin:0; padding:0;border:0;">
<meta charset='UTF-8'/>
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'" />
</head>
<body style="overflow: hidden; margin:0; padding:0; width:100vw; height:100vh;border:0;">
<iframe src="http://domain.com" style="overflow: hidden; margin:0; padding:0; width:100vw; height:100vh;border:0;"></iframe>
</body>
<script type=text/javascript>
alert(window.localStorage.getItem("aaa"));
window.localStorage.setItem("aaa", "111")
</script>
</html>
脚本中的提醒会在应用重新启动时保持。
然而,在应用程序重新启动时,localStorage使用iframe,清除,因此使用iframe不等于伪造意图。
答案 0 :(得分:1)
您的应用的localStorage不会与远程域共享,因为localStorage只是特定于域的,因此您需要使用其他技术来传递任何共享数据。以下是几种方法:
将值作为查询字符串参数传递给iframe网址。您可以随时将iframe附加到DOM等,或者在移动到SPA时先将localStorage值预先加载到其他地方。
使用更常见的方法让您的父网页向iframe发送postMessage
,并向iframe添加代码,以收听message
事件。
有关如何发送/接收postMessage的其他详细信息:
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage