如果您在 HTML 文档中使用 iFrame
元素,子页面将加载来自浏览器的所有 session 和 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 或 session 数据的情况下使用 iFrame?(如 Chrome 中的隐身模式)
为什么?
我的公司销售一种产品(网络应用程序)供人们用来构建自定义网站。当他们通过身份验证并访问他们的网站时,我们会向他们展示 UI 的授权版本,以便他们可以编辑内容。未经授权的用户只能看到静态网站。使用多个浏览器或清除 cookie 不是我们用户的合理期望,因此我们希望在 iFrame 中向他们显示他们网站的预览,以便他们可以看到访问者会看到什么。我们还想用较小分辨率的 iFrame 显示网站的“移动”预览,以便他们可以看到访问者如果通过手机访问网站时会看到的内容。这些 iFrame 需要在无法访问浏览器 cookie 或 session 数据的情况下加载,以便它们以未授权模式加载,就像 Chrome 在隐身模式下一样。
我还没有尝试过任何东西,因为我不知道从哪里开始。我确实发现 HTML5 added some sandbox
attribute values to the iFrame
element ,但他们似乎都没有帮助解决这个问题。也许可以用 JavaScript 来做一些事情,我们已经在我们的项目中使用了 jQuery。
注意:我们的目标是只使用有效的 HTML5
最佳答案
如果您完全控制 webstack,添加一个将用户视为未验证用户的预览参数不是更容易吗?
例如:
<iframe src="http://stackoverflow.com?preview=1" width="640" height="480" />
如果存在预览标志,则绕过您的授权检查。
关于javascript - 使用没有 session 或 cookie 数据的 iFrame(隐身),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18641843/