最近一直在搞python的web框架django,搞了这么段时间python觉得,这门语言确实非常方便。这两天碰到一个问题,本来想将用django做的一个页面直接嵌入到以前系统的frame中使用,结果发现打开却是空白,最后google了才知道,原来nginx已经在header上添加上了X-Frame-Options SAMEORIGIN,这个头文件就是为了防止页面被frame。

使用 X-Frame-Options 有三个可选的值:
1、DENY:浏览器拒绝当前页面加载任何Frame页面
2、SAMEORIGIN:frame页面的地址只能为同源域名下的页面
3、ALLOW-FROM:origin为允许frame加载的页面地址

过去为了实现这个限制,一般都要手动去配置:

具体的设置方法:
Apache配置:
Header always append X-Frame-Options SAMEORIGIN
nginx配置:
可以在location /{}里添加,也可以直接添加到server{}里
add_header X-Frame-Options SAMEORIGIN;
IIS配置:
<system.webServer>
...
 
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />

</customHeaders>

</httpProtocol>
 
...
</system.webServer>

 

如果想要取消nginx这个默认设置其实也很简单,需要nginx的另一个模块HttpHeadersMoreModule,这个模块nginx源代码里是不包含的,需要单独下载。

下载完之后:

如果安装过nginx,可以重新编译源文件:
/configure --prefix=/usr/local/nginx

--add-module=/home/ResourceScheduling/headers-more-nginx-module-0.25//这个路径是我下载的这个模块的路径
 

make
make install

安装好之后,在nginx.conf里的server里添加more_clear_headers X-Frame-Options;,这样的话就可以取消掉默认的头文件了。如果需要取消或添加其它头文件,可以见

http://wiki.nginx.org/HttpHeadersMoreModule