弹簧启动。获取失败。可能原因:CORS 网络失败 对于 CORS 请求,URL 方案必须为“http”或“https”

问题描述 投票:0回答:1

当我在本地主机上尝试 swagger 时,应用程序工作正常(API 工作),但我已经在铁路上进行了部署,当我尝试从 swagger 测试 API 时,我收到此错误:

获取失败。 可能的原因: 跨域资源共享 网络故障 对于 CORS 请求,URL 方案必须是“http”或“https”。

我认为发生这种情况是因为在本地应用程序中我使用http链接发出请求,但在铁路上的部署版本中它自动设置为https,这会导致错误吗?

我尝试向我的应用程序添加 WebConfig :

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*");
    }
}

但这并没有帮助我仍然遇到同样的错误

!!!!!当我向邮递员发出请求时,我通过此链接得到了正确的响应(这是一个获取请求):https://exciting-wonder-production.up.railway.app/country,但是从我得到的狂妄中错误:
获取失败。 可能的原因: 跨域资源共享 网络故障 对于 CORS 请求,URL 方案必须是“http”或“https”。

java spring-boot http-redirect https railway
1个回答
0
投票

尝试更新 swagger 配置类和 swager ui 以使用正确的 api https url:

@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI customOpenAPI() {
    return new OpenAPI()
            .servers(List.of(new Server().url("https://exciting-wonder-production.up.railway.app")));
}
}

将 .allowedOrigins("*") 替换为您部署的 url .allowedOrigins("https://exciting-wonder-production.up.railway.app")

@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
            .allowedOrigins("https://exciting-wonder-production.up.railway.app")
            .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
            .allowedHeaders("*")
            .allowCredentials(true);
}
}
© www.soinside.com 2019 - 2024. All rights reserved.