5

如果您在 HTML 文档中使用iFrame元素,则子页面将加载来自浏览器的所有会话和 cookie 数据。

例如:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Stack Overflow in an iFrame</title>
  </head>
  <body>
    <h1>Stack Overflow in an iFrame</h1>
    <iframe src="http://stackoverflow.com" width="640" height="480" />
  </body>
</html>

暂时忽略 SO 实际上不允许将自己加载到 iFrame 中。如果是这样,iFrame 加载的 SO 页面将显示您已登录。

如何在没有任何 cookie 或会话数据的情况下使用 iFrame?(就像 Chrome 中的隐身模式)

为什么?

我的公司销售一种产品(网络应用程序),供人们用来构建定制网站。当他们通过身份验证并访问他们的网站时,我们会向他们展示经过身份验证的 UI 版本,以便他们可以编辑内容。未经授权的用户只能看到静态网站。使用多个浏览器或清除 cookie 对我们的用户来说不是一个合理的期望,因此我们希望在 iFrame 中向他们显示他们网站的预览,以便他们可以看到访问者会看到什么。我们还希望显示具有较小分辨率 iFrame 的网站的“移动”预览,以便他们可以看到访问者通过手机访问网站时会看到什么。这些 iFrame(s) 需要在不访问浏览器的 cookie 或会话数据的情况下加载,以便它们在未经身份验证的模式下加载,就像 Chrome 在隐身模式下一样。

我还没有尝试任何东西,因为我不知道从哪里开始。我确实发现HTML5为element添加了一些sandbox属性值iFrame,但它们似乎都没有帮助解决这个问题。也许可以用 JavaScript 做一些事情,我们已经在我们的项目中使用了 jQuery。

注意:我们的目标是只使用有效的 HTML5

4

1 回答 1

5

如果您完全控制 webstack,添加一个将用户视为未经身份验证的预览参数不是更容易吗?

例如:

<iframe src="http://stackoverflow.com?preview=1" width="640" height="480" />

如果预览标志存在,则绕过您的授权检查。

于 2013-09-05T16:53:08.317 回答