【问题标题】:CORS: origin not found in access-control-allow-origin header (IE11)CORS:在访问控制允许来源标头中找不到来源(IE11)
【发布时间】:2017-11-27 04:18:18
【问题描述】:

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

但有一个例外,仅在 IE11 ON MY CLIENT NETWORK 中,请求不起作用返回“在 access-control-allow-origin 标头中找不到来源”

我发现它发生是因为在我的客户端网络中,请求没有返回 SECURITY 标头。下面的图片可以更好地解释它:

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

IE11 INSIDE MY CLIENT NETWORK(服务器没有返回安全标头)

JAVA CODE SERVER CORS FILTER(服务器没有安全头返回)

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

}

}

【问题讨论】:

  • 是的,看起来服务器没有在对 IE11 的响应中发送 CORS 标头。解决方案是让服务器向 IE 发送与向 Chrome 发送相同的标头。您需要显示有关如何配置服务器以及您正在使用的服务器端软件的信息,否则没有人会猜到服务器不发送 CORS 标头的原因。
  • 谢谢,我已经用返回 cors 的服务器过滤器更新了这个问题。它是托管在 jboss 7.1.1 上的 java 过滤器

标签: java networking cors internet-explorer-11 infrastructure


【解决方案1】:

问题不在于服务器端或 CORS,而在于 IE11 在这种特殊情况下不通过 AJAX 发送凭据:

互联网区域站点 -> 内部区域站点

将这两个子域更改为 TRUSTED ZONE 后,问题就解决了。

这是帮助我解决的问题:

Access denied in IE 10 and 11 when ajax target is localhost

【讨论】:

  • 我花了很长时间才找到这个想法,但这为我做到了。 CORS 请求在 Chrome 和 Firefox 中运行良好,但在 IE 中运行良好。在比较了请求标头后,我意识到 IE 中没有发送“Origin”标志。不知道为什么,但是一旦我添加了我们的本地 Intranet 站点域,它就起作用了。
猜你喜欢
  • 2019-02-09
  • 2016-06-02
  • 2020-10-31
  • 2021-09-07
  • 2016-03-15
  • 2016-06-27
  • 2016-12-10
  • 1970-01-01
相关资源
最近更新 更多