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"]

显然你 不应该这样做 因为下次有人安装要求时这个更改将会丢失。但它帮助我让文档在我的服务器上运行。