angular - 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 服务器设置了以下属性:
- 根网址: http://localhost:4200
- 有效的重定向 URI:http://localhost:4200/ *
- 网站来源: http://localhost:4200
(我们也尝试在 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
解决方案
推荐阅读
- google-sheets - IF AND THEN 公式多个工作表和整列
- google-apps-script - 我的 Google App 脚本需要很长时间才能结束。需要做得更快
- python - 从数据流上的谷歌存储读取的触发和窗口 python 束过程的最佳方法
- python - 为什么注册表格中没有显示电子邮件行?
- java - 将我的 ArrayList 转换为某个属性 JAVA 的 String[]
- javascript - 使用嵌套的对象数组创建多级下拉列表
- sql - 只有一个参数的 SQL Oracle UNION
- typescript - 如何从 ionic 的全局服务中获取变量?
- c# - 尝试发布更新时出现角度未定义变量错误
- r - R 包存在于库中,但在需要安装其他包时仍找不到