Django REST Swagger HTTPS 请求
Django REST Swagger HTTPS requests
如何配置 django-rest-swagger 以获取 HTTPS 请求?
更新:
存在 SSL 证书并且所有应用程序都在使用它,但是 swagger 发出了 http 请求。
这不是你招摇的问题。只需在您的 django 服务应用服务器上安装 SSL 证书。
在您的 settings.py
、
中添加此设置
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
详情请参考documentation..
此外,您可能需要确保您的服务器正在转发 x_forwarded_proto
并在 nginx 上将其添加到您在服务器配置中的位置:
proxy_set_header X-Forwarded-Protocol $scheme;
@zaidfazil 的回答几乎对我有用。我必须添加
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
到我的 django 设置,但后来我不得不添加
proxy_set_header X-Forwarded-Proto https;
而不是:
proxy_set_header X-Forwarded-Protocol $scheme;
在为 django 应用程序提供服务的 nginx 位置块内。
将 url='https://your_server_address/', 放入 get_schema_view 函数中 urls.
但是 swagger 现在只能在 https 上工作,如果你想同时在 http 和 https 上工作,你可以通过环境变量来处理。
以上所有解决方案都不适合我,所以我做了一些HORRIBLE有效的事情:
已编辑 drf_yasg/openapi.py 第 260 行
发件人:
self.schemes = [url.scheme]
收件人:
self.schemes = ["https"]
显然你 不应该这样做 因为下次有人安装要求时这个更改将会丢失。但它帮助我让文档在我的服务器上运行。
如何配置 django-rest-swagger 以获取 HTTPS 请求?
更新: 存在 SSL 证书并且所有应用程序都在使用它,但是 swagger 发出了 http 请求。
这不是你招摇的问题。只需在您的 django 服务应用服务器上安装 SSL 证书。
在您的 settings.py
、
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
详情请参考documentation..
此外,您可能需要确保您的服务器正在转发 x_forwarded_proto
并在 nginx 上将其添加到您在服务器配置中的位置:
proxy_set_header X-Forwarded-Protocol $scheme;
@zaidfazil 的回答几乎对我有用。我必须添加
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
到我的 django 设置,但后来我不得不添加
proxy_set_header X-Forwarded-Proto https;
而不是:
proxy_set_header X-Forwarded-Protocol $scheme;
在为 django 应用程序提供服务的 nginx 位置块内。
将 url='https://your_server_address/', 放入 get_schema_view 函数中 urls.
但是 swagger 现在只能在 https 上工作,如果你想同时在 http 和 https 上工作,你可以通过环境变量来处理。
以上所有解决方案都不适合我,所以我做了一些HORRIBLE有效的事情:
已编辑 drf_yasg/openapi.py 第 260 行
发件人:
self.schemes = [url.scheme]
收件人:
self.schemes = ["https"]
显然你 不应该这样做 因为下次有人安装要求时这个更改将会丢失。但它帮助我让文档在我的服务器上运行。