Java CORS:在访问控制允许原点标头(IE11)中找不到原点

Java CORS:在访问控制允许原点标头(IE11)中找不到原点,java,networking,cors,internet-explorer-11,infrastructure,Java,Networking,Cors,Internet Explorer 11,Infrastructure,我有一个网页可以在其他子域(subdomain1.domain.com->subdomain2.domain.com)中的另一个页面上发布文章,我知道我需要配置cors以允许这种情况。我做了所有的配置,它可以在CHROME、FIREFOX和IE11中运行 但有一个例外,只有在我的客户机网络上的IE11中,请求返回“在访问控制允许来源头中找不到来源”时无效 我发现这是因为在我的客户端网络中,请求没有返回安全头。下面的图片可以更好地解释这一点: 我的客户端网络之外的IE11(服务器返回的CORS为红

我有一个网页可以在其他子域(subdomain1.domain.com->subdomain2.domain.com)中的另一个页面上发布文章,我知道我需要配置cors以允许这种情况。我做了所有的配置,它可以在CHROME、FIREFOX和IE11中运行

但有一个例外,只有在我的客户机网络上的IE11中,请求返回“在访问控制允许来源头中找不到来源”时无效

我发现这是因为在我的客户端网络中,请求没有返回安全头。下面的图片可以更好地解释这一点:

我的客户端网络之外的IE11(服务器返回的CORS为红色)

我的客户端网络内的IE11(没有从服务器返回的安全标头)

JAVA代码服务器CORS筛选器(没有从服务器返回的安全标头)


}

问题不在服务器端或COR中,而是在IE11中,在这种特定情况下,IE11不通过AJAX发送凭据:

INTERNET区域站点->INTRANET区域站点

将这两个子域更改为受信任区域后,问题得到解决

这是帮助我解决的问题:


是的,服务器似乎没有在对IE11的响应中发送CORS头。解决方案是让服务器向IE发送与向Chrome发送相同的头。您需要显示有关服务器如何配置以及正在使用的服务器端软件的信息,否则没有人能够猜出服务器为什么不发送CORS头。谢谢,我已使用返回CORS的服务器筛选器更新了问题。它是jboss 7.1.1上托管的java过滤器。我花了很长时间才找到这个想法,但这确实帮了我。CORS请求在Chrome和Firefox中运行正常,但在IE中运行不正常。在比较请求标题后,我意识到IE中没有发送“Origin”标志。不确定原因,但一旦我添加了本地intranet站点域,它就工作了。
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

}