protected void configure(HttpSecurity http) throws Exception{
/**
* 自定义HeaderWriter,用以覆盖security默认的Header,
* 使默认的"X-Frame-Options:DENY"禁止一切iframe调用
* 转化为"X-Frame-Options:SAMEORIGIN"允许同域下的iframe调用
*/
HeaderWriter headerWriter = new HeaderWriter() {
@Override
public void writeHeaders(HttpServletRequest request, HttpServletResponse response) {
response.setHeader("X-Frame-Options","SAMEORIGIN");
}
};
List<HeaderWriter> headerWriters = new ArrayList<HeaderWriter>();
headerWriters.add(headerWriter);
HeaderWriterFilter headerWriterFilter = new HeaderWriterFilter(headerWriters);
http.addFilter(headerWriterFilter);
}
以上配置似乎对spring security的版本有一定要求:
今天在一个就项目上使用了上面的配置,setHeader()并没有成功替换掉原有的header信息,而是起到了追加的作用,也就是效果等同与addHeader();
后来对比了成功案例的配置,发现成功案例使用的是是4.1.1版本的jar包,而失败案例是3.2的,升级了版本后,setHeader()就成功起到替换效果了。