PHP、Nginx、Apache中禁止网页被iframe引用的方法
可以使用php或nginx等添加X-Frame-Optionsheader来控制frame权限
X-Frame-Options有三个可选的值:
DENY:浏览器拒绝当前页面加载任何Frame页面
SAMEORIGIN:frame页面的地址只能为同源域名下的页面
ALLOW-FROM:允许frame加载的页面地址
PHP代码:
header(‘X-Frame-Options:Deny');
Nginx配置:
add_headerX-Frame-OptionsSAMEORIGIN
可以加在locaion中
location/
{
add_headerX-Frame-OptionsSAMEORIGIN
}
Apache配置:
HeaderalwaysappendX-Frame-OptionsSAMEORIGIN
使用后不充许frame的页面会显示一个白板。
IIS方法
在web.config文件中加
<system.webServer> ... <httpProtocol> <customHeaders> <addname="X-Frame-Options"value="SAMEORIGIN"/> </customHeaders> </httpProtocol> ... </system.webServer>
js方法
很多都是用这种方放,服务器端设置有时候有问题
if(self.frameElement&&self.frameElement.tagName=="IFRAME"){ top.location.href=self.location.href; } if(window.frames.length!=parent.frames.length){ top.location.href=self.location.href; } if(self!=top){ top.location.href=self.location.href; }
Meta标签方法
<metahttp-equiv="X-FRAME-OPTIONS"content="DENY">
css禁止其他人的iframe,允许自己的
<styletype="text/css">
iframe{v:expression(this.src='about:blank',this.outerHTML='');}
#mine{v:expression()!important}
</style>
<body>内容:<iframesrc="http://www.baidu.com"></iframe>百度<iframesrc="http://www.126.com/"></iframe>126邮箱<iframesrc="http://www.163.com"></iframe>网易<p>以上三个firame不允许</p><p>firamegoogle是我要的.</p><p><iframeid="mine"name="myfirame"src="http://www.google.com/"width=800height=400></iframe></p>
参考:
https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options?redirectlocale=en-US&redirectslug=The_X-FRAME-OPTIONS_response_header