给定一个 host.html
<!doctype html> <meta charset="utf-8" /> <title>host</title> <iframe id="outer" sandbox="allow-scripts" src="https://another-site/sandbox.html" ></iframe> 其中 sandbox.html
<!doctype html> <meta charset="utf-8" /> <title>sandbox</title> <script> const inner = document.createElement('iframe'); inner.src = 'https://another-another-site/inner.html'; document.body.appendChild(inner); </script> 其中 inner.html
<!doctype html> <meta charset="utf-8" /> <title>inner</title> <script> const v = localStorage.getItem('no_such_key'); console.log('value:', v); </script> 问:试分析localStorage.getItem('no_such_key')的行为
我的回答:这大概率会抛出一个 SecurityError ,我的映像里因为 sandbox 的缘故 iframe 里面的网页浏览器是不会指定 origin 的。没有 origin 的话大概率 localstorage, session storage, index db 这一类都不可用
Follow up
- iframe src 和 iframe origin 的关系
- sandbox 里哪个属性控制这个行为?
- 在 inner html 里类似 fetch(..., { credentials: "include" })请求在哪些情况会带上 cookie
