给定一个 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

  1. iframe src 和 iframe origin 的关系
  2. sandbox 里哪个属性控制这个行为?
  3. 在 inner html 里类似 fetch(..., { credentials: "include" })请求在哪些情况会带上 cookie

标签: none

添加新评论