【问题标题】:How to know using Django if server is secure (uses https)如果服务器安全(使用 https),如何知道使用 Django
【发布时间】:2014-02-07 16:13:25
【问题描述】:

我在一个基于 Django 的应用程序上工作,我想知道是否有办法知道我的服务器是使用 http 连接还是 https。

我知道使用

import socket
if socket.gethostname().startswith('****'):

我可以获得主机名,是否可以做类似的事情以便我可以知道主机是否使用 ssl 证书?

PD:我是这里的新手,所以我想看看是否有可能,如果有,我应该怎么做。 谢谢

【问题讨论】:

    标签: python django ssl https ssl-certificate


    【解决方案1】:

    完全有可能:

    def some_request_function(request):
        if request.is_secure():
            #You are safe!
        else:
            #You are NOT safe!
    

    更多详情: https://docs.djangoproject.com/en/2.0/ref/request-response/#django.http.HttpRequest.is_secure

    【讨论】:

    • 谢谢,settings.py 中的内容如何?
    【解决方案2】:

    【讨论】:

    【解决方案3】:

    请求对象上有一个is_secure() 方法,如果连接是安全的,则返回True。

    根据您的特定服务器配置,您可能还需要在设置中设置SECURE_PROXY_SSL_HEADER

    【讨论】:

    • 这似乎更像我正在寻找的东西。在 settings.py 中会怎样?
    • 你使用什么服务器(nginx、apache)?
    • nginx。同样的问题(关于 settings.py)
    • @chefarov SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')。还要确保你的 nginx 配置中有 proxy_set_header X-Forwarded-Protocol $scheme;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2013-03-26
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多