首页 > 解决方案 > Keycloak:Angular 6 将 XMLHttpRequest 发送到 SpringBoot 后端的 CORS 问题

问题描述

我们的前端(Angular 6,http://localhost:4200)调用后端(SpringBoot,http://localhost:8080)面临以下问题:

从源“ http://localhost:4200 ”访问“ http://localhost:8080/typesorganisme ”处的 XMLHttpRequest已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头.

我们正在使用 Keycloak,并且被阻止的 URL 受到保护。

为 Keycloak 服务器设置了以下属性:

(我们也尝试在 Web Origins 中加入“*”,没有结果)

以下 CORS 属性通常由我们后端的此过滤器添加到标题中:

@Override
public void doFilter(final ServletRequest theServletRequest, final ServletResponse theServletResponse, final FilterChain theFilterChain) throws IOException, ServletException
{
    final HttpServletResponse response = (HttpServletResponse) theServletResponse;
    final HttpServletRequest request = (HttpServletRequest) theServletRequest;

    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods", "GET,POST,DELETE,PUT,OPTIONS");
    response.setHeader("Access-Control-Allow-Headers", "*");
    response.setHeader("Access-Control-Allow-Credentials", "true");
    response.setHeader("Access-Control-Max-Age", "180");
    response.setHeader("Access-Control-Expose-Headers", "X-Total-Count");
    theFilterChain.doFilter(theServletRequest, theServletResponse);
}

你有什么想法来解决这个问题吗?

更新

在我的后端更改了 cors 过滤器后,我现在正确公开了 Access-Control-Allow-Origin 但我的请求面临无限重定向循环:

重定向循环

导致此浏览器错误:

加载资源失败:net::ERR_TOO_MANY_REDIRECTS

标签: angularspring-bootcorskeycloak

解决方案


推荐阅读