当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud APIGW、Spring Boot和OpenAPI问题-CORS问题

麻华辉
2023-03-14

我使用Spring Boot和使用Spring Cloud APIGW的微服务堆栈。我使用这里提到的相同代码:https://piotrminkowski.com/2020/02/20/microservices-api-documentation-with-springdoc-openapi/

当我到达任何一个endpoint时,我都看不到响应正在到来并低于错误。

CORS 策略已阻止从源“http://localhost:8060”获取“http://192.168.0.2:49382/”的访问:请求的资源上不存在“访问控制-允许源”标头。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”,以便在禁用 CORS 的情况下获取资源。

代码:https://github.com/piomin/sample-spring-microservices-new

共有2个答案

咸昀
2023-03-14

您应该添加swagger配置

@Configuration
@OpenAPIDefinition(servers = {
    @Server(url = "/", description = "Default Server URL")
})
public class SwaggerConfiguration {

@Bean
public OpenAPI customOpenAPI(@Value("springdoc-openapi-ui") String serviceTitle, @Value("1.6.12") String serviceVersion) {
    final String securitySchemeName = "bearerAuth";
    return new OpenAPI()
            .components(
                    new Components().addSecuritySchemes(
                            securitySchemeName,
                            new SecurityScheme()
                                    .type(SecurityScheme.Type.HTTP)
                                    .scheme("bearer")
                                    .bearerFormat("JWT")
                    )
            )
            .security(List.of(new SecurityRequirement().addList(securitySchemeName)))
            .info(new Info().title(serviceTitle).version(serviceVersion));
}
}
拓拔玺
2023-03-14

我能够自己修复它,看看这里的建议:Spring Cloud Gateway和Springdoc OpenAPi集成和 https://github.com/springdoc/springdoc-openapi/issues/1144

我不得不在应用程序属性文件中的 apigw-service 中添加以下内容

server:
  forward-headers-strategy: framework

此外,在每个微服务中,您需要在下面添加bean

@Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {

            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
            }
        };
    }
 类似资料:
  • 我已经搜索了200多个站点(可能有些夸张,但没有太多),了解如何使用angularjs处理cors。我们有一台运行web API服务器的本地计算机。我们正在开发一个客户端,该客户端调用API获取数据。从服务器运行客户机时,我们接收数据没有问题。当我们从另一个域运行它时,当我们试图获取数据时,会得到一个红色200响应和一个空白响应。下面是一些代码: 我也尝试过使用$http,但得到了相同的响应(或没

  • 问题内容: 我已经搜索了200多个站点(可能有点夸张,但幅度不大),以了解如何使用angularjs处理cors。我们有一台运行Web API服务器的本地计算机。我们正在开发一个调用API数据的客户端。从服务器运行客户端时,我们不会收到任何问题。当我们从其他域运行它时,尝试获取数据时会收到红色的200响应,而响应为空。这是一些代码: 我也使用$ http尝试过此操作,但得到的响应相同(或缺少响应)

  • 问题内容: 我试图在获得图像之前先在画布上绘制图像,但是返回的数据就像是空的。 当我在控制台中检查它时,我发现字符串中有很多:() 当我尝试将画布附加到文档时,也没有绘制任何内容,并且控制台中没有引发任何错误。 这里有什么问题 ? 这是我的代码: 另外,进行快速刷新时,图像会正确绘制到画布上,但是控制台中出现错误消息,并且为空。 Firefox中的消息是: “ SecurityError:操作不安

  • 问题内容: 我目前正在尝试在NodeJS + React App中实现Auth0。尽管存在一个大问题,但给出的本教程确实非常有用且很有帮助。每次我尝试通过Auth0登录/注册时,都会收到 XMLHttpRequest无法加载 https://XYZ.eu.auth0.com/usernamepassword/login。对预检请求的响应未通过访问控制检查:在所请求的资源上不存在“ Access-C

  • 问题内容: 由于某种原因,每当我尝试将一些数据发布到api服务器时,都会出现以下两个错误。 这是我的客户端有角JS代码,试图发送一些简单数据。该代码当前正在位于以下位置的Nginx服务器上运行 这是我的节点JS代码,用于处理“处理”请求 问题答案: 如错误消息所述,您必须在对预检的响应中确认Content-Type标头。这可能是由于您的请求的非“简单” Content- Type(表面上是appl

  • 问题内容: 我有一个基于@RestController和AngularJS的简单项目。我可以将Angular的GET请求发送到@RestController,但无法发送POST请求。我在浏览器控制台中出错: XMLHttpRequest无法加载http:// localhost:8080 / add 。Access-Control-Allow- Headers不允许请求标头字段Content-Ty