如何阻止iframe通话

时间:2011-05-04 09:13:48

标签: .htaccess iframe

最近,我的完整网站在iframe中被另外两个域调用。我想阻止其他网站尝试在iframe中显示我的网站。

我如何通过.htaccess阻止它?

5 个答案:

答案 0 :(得分:64)

您可以在标题X-Frame-Options中设置变量:拒绝。

所有现代浏览器都支持X-Frame-Options标题。

Facebook使用此标头禁用iframe / framesets(也是Javascript)。

如果你在apache中启用了mod_headers:

的.htaccess

Header set X-Frame-Options DENY

但是,您可以启用iframe来自同一个来源。

Header always append X-Frame-Options SAMEORIGIN

或者在Nginx中:

add_header X-Frame-Options Deny; #or SAMEORIGIN

浏览器兼容性:Source

  • Internet Explorer:8.0
  • Firefox(Gecko):3.6.9(1.9.2.9)
  • Opera:10.50
  • Safari:4.0
  • Chrome:4.1.249.1042

答案 1 :(得分:3)

我认为你不能通过.htaccess,但你可以使用JS。您可以使用类似这样的函数来检查:

function parentIsSameOrigin()
{
    var result = true;
    if (window.parent)
    {
        result = Boolean
        (
            // more precise modifications needed here
            window.this.location.href.indexOf(window.parent.location.href) == 0
        );
    }
    return result;
}

答案 2 :(得分:1)

你不能“强制”它,因为有方法,但你可以使用标准的标题方法。 html5-boilerplate有一个很好的vhost / htaccess代码段,首先将X-Frame-Options设置为DENY/SAMEORIGIN/ALLOW-FROM的选择,然后允许将白名单MIME类型用于Google图片搜索等优秀框架。

检查最新链接,但以下是2016年1月25日SAMEORIGIN模式下的示例:

<IfModule mod_headers.c>

     Header set X-Frame-Options "SAMEORIGIN"

     <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$">
         Header unset X-Frame-Options
     </FilesMatch>

</IfModule>

答案 3 :(得分:0)

您可以使用.htaccess作为以下

RewriteEngine On

RewriteCond %{QUERY_STRING} !^id=[^&]+ [NC]
# if referrer is bad.com
RewriteCond %{HTTP_REFERER} (www\.)?bad\.com [NC]
# then redirect to a different page
RewriteRule !^404.shtm [L,NC,R=302]

你需要依赖HTTP_REFERER这个代码会将来自bad.com的任何请求重定向到未找到的页面

这个解决方案有助于这个答案

https://stackoverflow.com/a/19773719/1641233

答案 4 :(得分:-3)

嗯,我认为你不能。

iframe是客户端容器,这意味着最终用户浏览器负责加载iframe中的内容。您无法区分页面是否已加载到iframe中。