Для настройки заголовков вы можете установить фильтр и отображение фильтра в файле web.xml следующим образом:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>com.***.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Здесь этот фильтр вызывается для каждого запроса (с использованием / *).Вы можете указать любой пользовательский путь, по которому вы хотите вызвать фильтр.
И создать реализацию фильтра, в которой вы можете указать все требуемые заголовки и приемлемые методы запроса следующим образом:
@Component
public class CorsFilter implements Filter {
private static final Logger logger = LoggerFactory.getLogger(CorsFilter.class);
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
logger.info("Filters CORS request");
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
if(!(request.getMethod().equalsIgnoreCase("PUT")||request.getMethod().equalsIgnoreCase("DELETE"))){
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
response.setHeader("Access-Control-Max-Age", "2592000");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, content-type, sessionId, x-token,Set-Cookie,Access-Control-Allow-Credentials");
response.setHeader("Set-Cookie", "sessionId=" +request.getSession().getId() +"; path=/appname; secure; HttpOnly; domain="+Constants.DOMAINURL);
response.setHeader("Access-Control-Expose-Headers", "sessionId, x-token");
response.addHeader("Cache-Control", "max-age=2592000");
response.setDateHeader("Expires", System.currentTimeMillis() + 2592000000L); // 1 month in future.
response.setDateHeader("Last-Modified", new Date().getTime());
response.setHeader("X-Frame-Options", "DENY");
response.setHeader("X-XSS-Protection", "1; mode=block");
response.setHeader("X-Content-Type-Options", "nosniff");
boolean isSendRedirect = false;
if( !isSendRedirect)
chain.doFilter(req, res);
}
logger.info("Filters CORS request");
}
public void init(FilterConfig filterConfig) {
}
public void destroy() {
}
}