问题描述
我无法从我的网关访问我的微服务 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 仪表板
从其自己的链接捕获 Spring 仪表板
项目链接:https://github.com/SeifBh/spring-project
有什么想法吗?
解决方法
如果使用 Chrome,请尝试添加 extension
:
Allow 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 Docs
:Here
您必须将您的项目迁移到 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/guides/gs/gateway/
祝你好运
乔
,您将在浏览器控制台/网络选项卡中收到一些与 UI 相关的错误。要通过 zuul 访问 spring boot admin,您需要指定属性 spring.boot.admin.ui.public-url
,该属性的值将是您的 zuul 主机。
查看 this 了解更多详情。