首页 > 解决方案 > 如何修复 Swagger 中的混合内容错误?

问题描述

我在 Gunicorn 上运行 Django RF 后端应用程序。尝试从 Swagger 获取数据时,我得到“TypeError:无法获取”在控制台中报告此错误:

混合内容:“https://****.com/swagger/”的页面是通过 HTTPS 加载的,但请求了不安全的资源“http://****.com/v2/products/”。此请求已被阻止;内容必须通过 HTTPS 提供。

我尝试了所有我发现并能想到的方法,包括:

secure_scheme_headers = {
    'X-FORWARDED-PROTOCOL': 'ssl',
    'X-FORWARDED-PROTO': 'https',
    'X-FORWARDED-SSL': 'on'}

到独角兽

USE_X_FORWARDED_HOST = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

到 Django 设置。

但没有任何帮助。

为 Django 招摇:drf-yasg==1.12.1

标签: djangoswaggergunicorn

解决方案


我找到了解决方案。在 Django 设置中添加

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

# Security Headers
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
SECURE_HSTS_SECONDS = 3600

推荐阅读