【问题标题】:Micronaut with remote Swagger-UI / CORS error带有远程 Swagger-UI / CORS 错误的 Micronaut
【发布时间】:2019-11-06 15:58:45
【问题描述】:

目前,我正在为 Micronaut 1.2.5 和远程 Swagger-UI 苦苦挣扎。我的想法是在一个 Swagger-UI 实例中收集多个 API。

在我的 Micronaut 项目中,我能够创建一个有效的 Swagger YAML 文件,并且使用此解决方案 Swagger for Micronaut with maven(在我的项目中提供静态 Swagger-UI 页面)一切正常。

为了让 Micronaut 使用与我的服务不同的域中的远程 Swagger-UI,我在 application.yml 中进行了以下设置:

micronaut:
  server:
    cors:
      endabled: true
      configurations:
        web:
          exposedHeaders:
            - Access-Control-Allow-Origin
            - Access-Control-Allow-Headers
            - Access-Control-Allow-Methods

不幸的是,这无济于事,Swagger-UI 失败了

Fetch error
NetworkError when attempting to fetch resource. https://....yml

Fetch error
Possible cross-origin (CORS) issue? The URL origin (https://aa) does not match the page (https://bb). Check the server returns the correct 'Access-Control-Allow-*' headers.

在 Micronaut 响应中,不包含 Access-Control-Allow 标头。虽然调试 CorsFilter 似乎没有被调用,但是 doFilter 方法中的断点没有任何作用。

有什么想法吗?

提前谢谢你, 克里斯托夫

【问题讨论】:

  • 错字?你的配置文件真的有endabled: true吗?如果是这样,那需要改为enabled: true,对吗?
  • 你是对的,修复了启用类型的 cors。我还更改了exposedHeaders。但不幸的是,这仅在某些时候有帮助,而且仅在 Firefox、Chrome 和 Edge 中出现相同的错误消息。

标签: cors swagger-ui micronaut


【解决方案1】:

经过一番调查,我能够解决问题。

我的 application.yaml 现在看起来像这样:

micronaut:
  server:
    cors:
      enabled: true
      configurations:
        web:
          exposedHeaders:
            - Content-Type
            - Authorization
            - '*'

有关 Chrome 和 Edge 的问题是由不被接受的自签名 SSL 证书引起的。

为了解决这个问题,在浏览器中打开 swagger.yml 文件并将自签名 SSL 证书添加到浏览器会有所帮助。之后,您就可以在 Swagger 中使用您的 Micronaut API。

【讨论】:

  • 我也有同样的问题。我添加了您的 applicatoin.yaml 并且我看到带有 POST 或 PUT 的新标头,但不是 api 上的 GET 或 swagger.yml 文件的 GET 上。我用http会不会有问题?
猜你喜欢
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 2020-02-29
  • 2022-01-12
  • 2020-09-19
  • 2017-12-02
  • 1970-01-01
  • 2018-06-11
相关资源
最近更新 更多