【发布时间】:2016-10-18 14:10:42
【问题描述】:
我们需要在基于 CQ5/AEM 的应用程序中设置以下响应标头。
Http Header: Frame options 设置 X-Frame-Options: SAME ORIGIN Http Header: 严格传输安全 Strict-Transport-Security: max-age=10886400;包括子域;预加载
我在之前的应用程序中使用 servlet 过滤器拦截了请求。同样,我尝试将 SlingFilter 用于此应用程序。然而,对于每个请求,它似乎被调用了很多次(当它下载 js、css、json 文件等时)。请看下面的代码sn-p,
@SlingFilter(scope = SlingFilterScope.COMPONENT, order = Integer.MIN_VALUE)
@Properties({
@Property(name="pattern",value="/soni/template/", propertyPrivate=false)
})
public class ResponseHeaderFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
try {
HttpServletResponse httpResponse = (HttpServletResponse)response;
httpResponse.setHeader("Strict-Transport-Security", "max-age=10886400; includeSubDomains");
filterChain.doFilter(request, httpResponse);
httpResponse.setHeader("X-Frame-Options", "SAMEORIGIN");
} catch (Exception e) {
e.printStackTrace();
}
}
这是在 CQ5/AEM 中执行此操作的正确方法吗?如何将其限制为每页请求一次? 还是有更好的方法来做到这一点,比如在调度员等处进行配置?
【问题讨论】:
-
您是否有不想从 Apache/Dispatcher 层执行此操作的原因?
-
看看那个选项,这是我的问题的一部分。我已经要求我公司的管理员进行调查。我是 CQ5/AEM 的新手。我认为我们可以按照以下链接进行操作,docs.adobe.com/docs/en/dispatcher/disp-config.html#Specifying 要传递的 HTTP 标头 - /clientheaders 你有什么建议/指针吗?
-
过滤器将拦截每个 HTTP 请求,即 html、js、css、图像等,这就是为什么它被多次调用的原因,正如您所观察到的。如果我必须从代码 sn-p 中的标头名称推断,这些似乎与安全性有关。您是否有理由不希望所有请求都使用这些标头?
标签: aem