Как изменить Схемы с HTTP на HTTPS в drf_yasg? - PullRequest
0 голосов
/ 19 сентября 2019

Я использую drf_yasg для документации о чванстве.Когда я публикую свое приложение DRF за AWS Application Load Balancer и настроил прослушиватель на прослушивание 443 HTTPS и перенаправление на мой EC2, на котором работает DRF, пользовательский интерфейс swagger пытается отправить запрос на конечную точку http://example.com/status, а не, например, https://example.com/status.Это приводит к ошибке Google Chrome:

swagger-ui-bundle.js:71 Mixed Content: The page at 'https://example.com/swagger#/status/status_list' was loaded over HTTPS, but requested an insecure resource 'http://example.com/status'. This request has been blocked; the content must be served over HTTPS.

Поэтому мое решение для решения этой проблемы состояло в том, чтобы явно указать URL моего сервера в drf_yasg.views.get_schema_view.Итак, мой код выглядит так:

schema_view = get_schema_view(
    openapi.Info(
        title="Server Api Documentation",
        default_version="v1",
        description="",
    url="http://example.com/status"
)

# noinspection PyUnresolvedReferences
swagger_patterns = [
    path("", schema_view.with_ui("swagger", cache_timeout=0), name="schema-swagger-ui"),

Я бы хотел не иметь возможности явно задавать строку URL, а вместо этого выбирать схемы между HTTP или HTTPS.Возможно ли это в drf_yasg?

1 Ответ

0 голосов
/ 25 сентября 2019

Добавьте их в свой Django settings.py

# Setup support for proxy headers
USE_X_FORWARDED_HOST = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
...