у меня есть веб-страница, которая выполняет POST на другую страницу в другом субдомене (subdomain1.domain.com -> subdomain2.domain.com), и я понимаю, что мне нужно настроить cors, чтобы разрешить эту ситуацию. Я сделал все конфиги, и он работает в CHROME, FIREFOX И IE11 ..
но есть исключение, только в IE11 В МОЕЙ КЛИЕНТСКОЙ СЕТИ запрос не работает, возвращая «источник не найден в заголовке access-control-allow-origin»
я обнаружил, что это происходит потому, что в моей клиентской сети запрос не возвращает заголовок SECURITY. Изображения ниже могут объяснить это лучше:
IE11 ВНЕ МОЕЙ КЛИЕНТСКОЙ СЕТИ (выделено красным цветом CORS, возвращаемый с сервера)
IE11 ВНУТРИ МОЕЙ КЛИЕНТСКОЙ СЕТИ (от сервера не возвращается заголовок безопасности)
ФИЛЬТР CORS JAVA CODE SERVER (от сервера не возвращается заголовок безопасности)
public class CorsFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse resp = (HttpServletResponse) servletResponse;
resp.addHeader("Access-Control-Allow-Origin", "https://intranet2.culturainglesa.net");
resp.addHeader("Access-Control-Allow-Credentials", "true");
resp.addHeader("Access-Control-Allow-Methods", "GET,POST");
resp.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
// Just ACCEPT and REPLY OK if OPTIONS
if (request.getMethod().equals("OPTIONS")) {
resp.setStatus(HttpServletResponse.SC_OK);
return;
}
chain.doFilter(request, servletResponse);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
}