无法从网关访问 spring boot admin

问题描述

我无法从我的网关访问我的微服务 spring 管理仪表板,但它可以通过直接链接 (spring-dashboard) 链接工作。

这个问题出现在新版本的spring boot admin dashboard 上,看起来像是Cors的起源问题:

Access to XMLHttpRequest at 'http://localhost:9091/applications' from origin 'http://localhost:8083' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

从网关捕获 Spring 仪表板

enter image description here

从其自己的链接捕获 Spring 仪表板

enter image description here

项目链接https://github.com/SeifBh/spring-project

有什么想法吗?

解决方法

如果使用 Chrome,请尝试添加 extensionAllow CORS - Chrome,Allow CORS - Chrome

如果您不想为 Chrome 添加扩展程序,您可以通过控制台打开 Chrome(您应该关闭所有 Chrome 窗口第一):

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

如果使用 Firefox,请尝试添加 add-on : Allow CORS - Firefox


如果你想在代码中修复它,你需要添加以下配置:

@Bean
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/resource")
                    .allowedOrigins("http://localhost:8080");
        }
    };
}

检查Spring DocsHere

,

您必须将您的项目迁移到 Spring Cloud Gateway。

以下 Spring Cloud Netflix 模块和相应的启动器将进入维护模式:

spring-cloud-netflix-archaius spring-cloud-netflix-hystrix-contract spring-cloud-netflix-hystrix-dashboard spring-cloud-netflix-hystrix-stream spring-cloud-netflix-hystrix spring-cloud-netflix-ribbon spring-cloud-netflix-turbine-stream spring-cloud-netflix-turbine spring-cloud-netflix-zuul

此链接中的更多信息:https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-netflix-projects-entering-maintenance-mode

您必须遵循以下示例:https://spring.io/guides/gs/gateway/

祝你好运

,

您将在浏览器控制台/网络选项卡中收到一些与 UI 相关的错误。要通过 zuul 访问 spring boot admin,您需要指定属性 spring.boot.admin.ui.public-url ,该属性的值将是您的 zuul 主机。 查看 this 了解更多详情。