当我在本地主机上尝试 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”。
尝试更新 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);
}
}