第一个解决方案是使用X-Frame-Options
标题来防止将页面加载到 iframe。X-Frame-Options
可以指定以下两个值之一:SAMEORIGIN
,它只允许来自同一来源的 iframe 显示此内容,以及deny
,它阻止任何 iframe 这样做。但此标头不是 HTTP 规范的一部分,是由 Microsoft 引入的,因此并非所有浏览器都支持此标头。一个例子X-Frame-Options
:
X-Frame-Options: SAMEORIGIN
以防某些旧浏览器不支持X-Frame-Options
标头。您可以尝试一种称为FrameKiller的技术。但是,正如该链接中所指出的那样,存在一些限制。
用户代理不支持 JavaScript。
用户代理支持 JavaScript,但用户已关闭支持。
用户代理的 JavaScript 支持存在缺陷或部分实现。
这个想法是使用 javascript 来检测您的页面是否加载到 iframe 中。有很多方法可以实现帧杀手脚本。
根据您的要求,您可以像这样实现一个框架杀手脚本:尝试访问您的父窗口以读取window.location
. 如果他们将您的页面包含在其 iframe 中,则代码将引发异常(跨域)
示例代码:
window.onload = function(){
try
{
if (window.parent && window.parent.location.hostname !== "www.abc.com"){
throw new Error();
}
}
catch (e){
alert("Please visit www.abc.com to play this game.");
//You could do whatever you want here
}
}