Springfox Swagger UI за обратным прокси - PullRequest
0 голосов
/ 24 апреля 2018

Я настроил приложение Spring Boot с документацией Swagger API и настроил Swagger UI.

Я также запускаю свое внутреннее приложение за обратным прокси-сервером, который отображает все запросы от host:port/api до backend_host:port/ при запускелокально на localhost я отображаю localhost:8082/api.В производстве применяется аналогичное сопоставление.

Когда я открываю интерфейс Swagger из 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";
                }
               })

1 Ответ

0 голосов
/ 16 мая 2019

Я думаю, что в вашем случае вам необходимо настроить прокси-сервер для установки заголовка HTTP
(который будет перенаправлен на ваш целевой бэкэнд)
«уведомить» конечные точки Swagger о возврате пользовательского URL в конечную точку / apidocs.

Пожалуйста, настройте прокси для установки заголовка X-Forwarded-Host в значение от Хост заголовок запроса

Пояснение:
В вашем браузере, когда вы посетите URL, например. https://my.domain.com/api/swagger-ui.html

прокси должен создать и переслать заголовок X-Forwarded-Host: my.endpoint.com

на ваш бэкэнд localhost:8082/api/swagger-ui.html

-> чтобы точка зрения Swagger / apidocs могла учесть этот заголовок в ответе JSON.

Мой собственный случай - в Microsoft IIS:

Мне нужно было настроить Microsoft IIS для обслуживания Swagger IU от Apache Tomcat через порт 8080 в домене HTTPS,
поэтому мне нужно было иметь следующую конфигурацию:

<serverVariables>
    <set name="HTTP_X_FORWARDED_HOST" value=“{HTTP_HOST}” />
    <set name="HTTP_X_FORWARDED_PROTO" value="https" />
</serverVariables>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...