【问题标题】:Django REST Swagger HTTPS requestsDjango REST Swagger HTTPS 请求
【发布时间】:2017-07-28 11:31:48
【问题描述】:

如何配置django-rest-swagger获取HTTPS请求?

更新: SSL 证书存在并且所有应用程序都在使用它,但是大摇大摆地发出一个 http 请求。

【问题讨论】:

    标签: python django django-rest-framework swagger-2.0 django-rest-swagger


    【解决方案1】:

    将此设置添加到您的settings.py

    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    

    更多详情,请参考documentation..

    另外,您可能需要确保您的服务器正在转发 x_forwarded_proto 并在 nginx 上将此添加到您在服务器配置中的位置:

    proxy_set_header  X-Forwarded-Protocol  $scheme;
    

    【讨论】:

    • 对我没有帮助
    • 你是否在你的 nginx 配置文件中添加了设置?
    • 当然,我在我的 nginx conf 中添加了设置。
    • 您能展示一下您添加的相关代码吗?
    • 任何 apache 特定设置?我有一个“永久重定向/localhost.my.org
    【解决方案2】:

    把 url='https://your_server_address/',放在 urls 中的 get_schema_view 函数中。

    但是 swagger 现在只能在 https 上工作,如果你想同时在 http 和 https 上工作,你可以通过 env 变量来处理。

    【讨论】:

      【解决方案3】:

      这不是你大摇大摆的问题。只需在您的 django 服务应用服务器上安装 SSL 证书。

      【讨论】:

      • 存在 SSL 证书并且所有应用程序都在使用它,但大摇大摆地发出 http 请求。
      【解决方案4】:

      @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 位置块内。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-07
        • 2016-08-10
        • 1970-01-01
        • 1970-01-01
        • 2015-10-15
        • 1970-01-01
        • 2019-11-22
        • 2014-12-22
        相关资源
        最近更新 更多