lan*_*oxx 6 swagger-ui springfox
我已经使用 Swagger API 文档配置了一个 Spring Boot 应用程序并配置了 Swagger UI。
我还在一个反向代理后面运行我的后端应用程序,该代理将所有请求映射host:port/api到backend_host:port/,当我在本地本地运行时映射到localhost:8082/api。在生产中应用了类似的映射。
当我从中打开 Swagger UI 时,localhost:8082/api/swagger-ui.html它会在标题下方显示以下几行:
[ 基本 URL: localhost:8080 ]
http://localhost:8082/api/v2/api-docs
当我调用任何休息操作时,swagger 总是尝试针对 localhost:8080 执行它,然后由于相同的来源策略而失败。
我知道使用pathProvider但它只影响基本 URL 的路径部分,而不影响域和端口。所以我只能使用它来将基本 URL 更改为 localhost:8080/api 但我需要将其更改为 localhost:8082/api。有没有办法将主机动态设置为浏览器中活动的当前主机和端口?
.pathProvider (new RelativePathProvider (servletContext) {
@Override
public String getApplicationBasePath() {
return "/api";
}
})
Run Code Online (Sandbox Code Playgroud)
在我的例子中,使用 spring-boot:2.2.6 应用程序和 springdoc-openapi-ui:1.3.0 (也嵌入了 swagger UI),我通过以下方式解决了设置服务器 URL 的代理问题:
@Configuration
public class OpenApiConfig {
@Value("${server}")
private String url;
@Bean
@Profile("prod")
public OpenAPI customConfiguration() {
return new OpenAPI()
.servers(Collections
.singletonList(new Server().url(url))) //real public URL
.components(new Components())
.info(new Info().title("Dummy API Docs")
.description("Dummy REST API documentation"));
}
}
Run Code Online (Sandbox Code Playgroud)
此更改反映在合同中(https://real-domain.com/api-docs):
在 Swagger UI ( https://real-domain.com/swagger-ui/index.html?configUrl=/api-docs/swagger-config )
我认为在您的情况下,您需要配置代理以设置 HTTP 标头
(它将转发到您的目标后端)
“通知”Swagger 端点在 /apidocs 端点中返回自定义 URL。
请配置代理以将标头X-Forwarded-Host设置为Host请求标头中的值
\n\n说明:
\n在您的浏览器中,当您访问某个网址时,例如。https://my.domain.com/api/swagger-ui.html
代理应该创建并转发标头 X-Forwarded-Host: my.endpoint.com
到你的后端localhost:8082/api/swagger-ui.html
-> 因此 Swagger /apidocs enpoint 可以在响应 JSON 中考虑此标头。
\n\n我自己的案例 - 在 Microsoft IIS 中:
\n\n我需要配置 Microsoft IIS 以通过 HTTPS 域上的 8080 端口上的 Apache Tomcat 为 Swagger IU 提供服务,
\n因此我需要进行以下配置:
<serverVariables>\n <set name="HTTP_X_FORWARDED_HOST" value=\xe2\x80\x9c{HTTP_HOST}\xe2\x80\x9d />\n <set name="HTTP_X_FORWARDED_PROTO" value="https" />\n</serverVariables>\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
6202 次 |
| 最近记录: |