目前,我正在为Micronaut 1.2.5和远程Swagger-UI而苦苦挣扎。我的想法是在一个Swagger-UI实例中收集多个API。
在我的Micronaut项目中,我能够创建一个有效的Swagger YAML文件,并使用这个解决方案Swagger for Micronaut with maven (在我的项目中提供静态Swagger-UI页面),一切正常。
为了让Micronaut与远程Swagger-UI一起工作,该远程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方法中的断点没有任何影响。
有什么想法吗?
先谢谢你,克里斯托弗
发布于 2019-11-07 17:23:58
经过一番调查,我终于解决了这些问题。
我的application.yaml现在看起来像这样:
micronaut:
server:
cors:
enabled: true
configurations:
web:
exposedHeaders:
- Content-Type
- Authorization
- '*'关于Chrome和Edge的问题是由不被接受的自签名SSL证书引起的。
要解决这个问题,可以在浏览器中打开swagger.yml文件,并将自签名的SSL证书添加到浏览器中。然后你就可以在Swagger中使用你的Micronaut API了。
https://stackoverflow.com/questions/58734101
复制相似问题