Почему мой пользовательский интерфейс Swagger пытается получить доступ к содержимому, отличному от http, при загрузке по протоколу https? - PullRequest
0 голосов
/ 27 августа 2018

Я использую AWS: ALB, поэтому у меня есть правило, которое перенаправляет весь трафик определенной целевой группе. Работая локально, я могу получить доступ к странице пользовательского интерфейса Swagger без проблем с HTTP. При развертывании в AWS с HTTPS ALB я вижу, что он пытается загрузить некоторый HTTP-контент; которые, конечно, блокируются браузером.

Ошибка:

Mixed Content: The page at 'https://alb.com/alert/docs/swagger-ui.html' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://alb.com/swagger-resources/configuration/ui'. 
This request has been blocked; the content must be served over HTTPS.

У меня есть следующее в моей конфигурации в моем проекте, так что пользовательский интерфейс Swagger может загружаться в /alert/docs/swagger-ui.html:

@Configuration
@EnableWebMvc
@ComponentScan
public class DocumentationConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addRedirectViewController("/alert/docs/v2/api-docs", "/v2/api-docs");
        registry.addRedirectViewController("/alert/docs/configuration/ui", "/configuration/ui");
        registry.addRedirectViewController("/alert/docs/swagger-resources/configuration/ui", "/swagger-resources/configuration/ui");
        registry.addRedirectViewController("/alert/docs/swagger-resources/configuration/security", "/swagger-resources/configuration/security");
        registry.addRedirectViewController("/alert/docs/configuration/security", "/configuration/security");
        registry.addRedirectViewController("/alert/docs/swagger-resources", "/swagger-resources");
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/alert/docs/**").addResourceLocations("classpath:/META-INF/resources/");
    }
}

Мне не хватает какой-либо конфигурации, которая вызывает это?

1 Ответ

0 голосов
/ 14 марта 2019

Если вы используете SpringBoot, вы можете добавить это:

server:
    tomcat:
        remote-ip-header: x-forwarded-for
        protocol-header: x-forwarded-proto`

для вашего application.yaml или application.properties. Более подробная информация доступна здесь: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-security.html#howto-enable-https

...