如何防止用户在 iframe 之外打开我的 web 应用程序?
我正在开发一个 java web 应用程序,该应用程序显示在较大门户内的 iframe 中。
我的 web 应用程序必须始终位于外部门户的 iframe 内,但是当用户右键单击我的 web 应用程序的链接之一并执行“在新窗口/选项卡中打开”时,他会在新窗口中将我的 web 应用程序视为独立网站。
如何防止在门户的 iframe 之外看到我的应用程序?
I am working on a java webapp that is displayed in an iframe inside a larger portal.
My webapp must always be inside the iframe of the outer portal, but when the user right clicks on one of my webapp's links and does "open in new window/tab", he sees my webapp as a standalone website in the new window.
How do I prevent seeing my app outside of the portal's iframe?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您所指的功能位于浏览器级别,因此无法删除(即链接选项将始终存在)。您可以采取多种措施来确保您的应用程序在框架内运行:
检查框架是否存在:
if (top === self) { 不在框架中 } else { 在框架中 }
禁用右键菜单(ctrl + 单击仍然有效)下面是一个简单示例。
注意: 虽然我确信这是不言而喻的,但如果用户禁用了 JavaScript,这种方法将不起作用。
The functionality you're referring to is at the browser level and is therefore impossible to remove (i.e., the link option will always be there). There are several things you can do to ensure that your app is running inside a frame:
Check for the presence of a frame:
if (top === self) { not in a frame } else { in a frame }
Disable the right click menu (ctrl + click will still work) Below is a simple example.
<body oncontextmenu="return false;">
Note: Although I'm sure it goes without saying, if the user has disabled JavaScript, this approach will not work.
加载时检查 window.parent。
Check window.parent on load.
使用 javascript,您可以检测是否在 iframe 内运行。看:如何识别网页是在 iframe 内加载还是直接加载到浏览器窗口中?
With javascript you can detect if you are running inside an iframe. Look: How to identify if a webpage is being loaded inside an iframe or directly into the browser window?