镜像别人网站是非常讨厌的行为。其中有一种方法采用了 iframe 框架嵌套调用,那么如何阻止被iframe 调用呢?本文将分享一些方法。
方法一:js 方法。这种方法不可靠,不推荐使用
windows.location.href
: 自己的地址;
self
: 指代当前窗口对象,属于window最上层的对象;
location.href
: 指的是某window对象的URL地址;
self.location.href
: 指当前窗口的URL地址,去掉 self 默认为当前窗口的URL地址;
window.location.href
、location.href
、self.location.href
是本页面地址;
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利
parent.location.href
: 上一层页面地址;
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利
top.location.href
: 最外(上)层的页面地址。
- <script type="text/javascript">
- if(self != top) { top.location = self.location; }
- </script>
或
- <script type="text/javascript">
- if(top.location != self.location){
- top.location = self.location;
- }
- </script>
或
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
- <script type="text/javascript">
- if(window.top.location != window.self.location){
- alert('你想表达的内容');
- window.top.location = window.self.location;
- }
- </script>
或
- <script>
- if (top.frames.length!=0){
- top.location=self.document.location;
- }
- </script>
或
本文禁止无授权转载 - 时光在路上 www.timezls.com 保留所有权利
- <script>
- (function(window){
- if (window.location !== window.top.location){
- window.top.location = window.location;
- }
- })(this);
- </script>
或
- <script>
- this.top.location !== this.location && (this.top.location = this.location);
- </script>
或
- <script type="text/javascript">
- var url=window.location.href;
- if(window!=parent){
- parent.navigate(url);
- }
- </script>
或
- <script type="text/javascript">
- if(top != self){
- location.href = "about:blank";
- }
- </script>
或
- <script type="text/javascript">
- if(window!=parent){
- parent.navigate(window.location.href);
- }
- </script>
把上面的任一 JS 代码片段放到你页面的 head 中即可。
方法二:Meta 标签方法
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
X-Frame-Options 是一个HTTP 标头(header),用来告诉浏览器这个网页是否可以放在 iFrame内。使用 X-Frame-Options 可以一定程度上保障你的网页不会被放在恶意网站设定的 iFrame内,令用户成为点击劫持的受害人。例如:
- X-Frame-Options: DENY (不要把任何网页放在iFrame 内);
- X-Frame-Options: SAMEORIGIN(只有当架设 iFrame的 网站与发出 X-Frame-Options 的网站相同时才能显示发出 X-Frame-Options 网页的内容);
- X-Frame-Options: ALLOW-FROM https://www.timezls.com/(只能放在 https://www.timezls.com/ 网站网页架设的 iFrame 内)。
- <meta http-equiv="X-Frame-Options" content="deny" />
并不是所有的浏览器都支持这个header 所以,低版本的浏览器仍然会被 iframe 成功:
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
- IE 8+
- Opera 10.50+
- Safari 4+
- Chrome 4.1.249.1042+ (Allow-From not yet supported)
- Firefox 3.6.9 (or earlier with NoScript)
而且,可能会出现:X-Frame-Options may your-url.html:1 only be set via an HTTP header sent along with a document. It may not be set inside <meta> 这样的错误信息。
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
后端程序处理方法
方法三:PHP 法
- <?php header(‘X-Frame-Options:Deny'); ?>
上面这种方法,使用 CDN 静态加速后会失效。
服务器端解决方法
方法四:Apache主机
- Header always append X-Frame-Options SAMEORIGIN
方法五:Nginx主机
- add_header X-Frame-Options "SAMEORIGIN";
方法六:.htaccess
在网站根目录下的 .htaccess 文件中中加一句
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
- Header append X-FRAME-OPTIONS "SAMEORIGIN"
本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2024. All Rights Reserved
方法七:IIS方法
在web.config文件中加
- <system.webServer>
- ...
- <httpProtocol>
- <customHeaders>
- <add name="X-Frame-Options" value="SAMEORIGIN" />
- </customHeaders>
- </httpProtocol>
- ...
- </system.webServer>