【发布时间】:2016-10-14 20:13:58
【问题描述】:
我们目前有一个 Java Web 应用程序正在从 Struts 1 迁移到 Struts 2。我们希望为所有 Struts 2 操作配置 X-Frame-Options 和 Content-Security-Policy 标头。我们有很多动作,我想尽可能避免单独修改它们。
我目前的想法是将以下拦截器添加到默认堆栈中:
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class HttpHeaderInterceptor implements Interceptor {
private static final long serialVersionUID = 1L;
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void init() {
// TODO Auto-generated method stub
}
@Override
public String intercept(ActionInvocation Invocation) throws Exception {
HttpServletResponse response = ServletActionContext.getResponse();
response.addHeader("X-Frame-Options", "SAMEORIGIN");
response.addHeader("Content-Security-Policy-Report-Only", "default-src 'self'; script-src 'self' 'unsafe-inline'; object-src 'none'; style-src 'self' 'unsafe-inline'; img-src 'self'; media-src 'none'; frame-src 'none'; font-src 'self'; connect-src 'self'; report-uri REDACTED");
response.addHeader("X-Content-Security-Policy-Report-Only", "default-src 'self'; script-src 'self' 'unsafe-inline'; object-src 'none'; style-src 'self' 'unsafe-inline'; img-src 'self'; media-src 'none'; frame-src 'none'; font-src 'self'; connect-src 'self'; report-uri REDACTED");
return Invocation.invoke();
}
}
上面我试过了,还是不行,就是没有设置headers。
我需要进行哪些更改才能修复此拦截器?甚至可以以这种方式更改响应标头吗?
【问题讨论】:
标签: java struts2 http-headers httpresponse struts2-interceptors