【问题标题】:Making an HTTPS site using Django使用 Django 创建 HTTPS 站点
【发布时间】:2013-08-02 20:25:21
【问题描述】:

我正在使用 Django 构建一个站点,并且我希望我的站点的一部分使用 HTTPS。

在我的 settings.py 文件中,我有

SESSION_COOKIE_SECURE = True

CSRF_COOKIE_SECURE = True

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

在我的 wsgi.py 文件中,我有 os.environ['HTTPS'] = "on"

然后在我正在处理的网站部分的 views.py 中,我使用装饰器强制将所有内容重定向到 https。

def secure_required(view_func):
    def _wrapped_view_func(request, *args, **kwargs):
        if not request.is_secure():
            if getattr(settings, 'HTTPS_SUPPORT', True):
                request_url = request.build_absolute_uri(request.get_full_path())
                secure_url = request_url.replace('http://', 'https://')
                return HttpResponseRedirect(secure_url)
        return view_func(request, *args, **kwargs)
    return _wrapped_view_func

但是,当我尝试在本地主机上加载该页面时,该页面无法加载,我只是收到一条错误消息,提示“此网页不可用”。为我的网站启用 HTTPS 缺少什么?

网络服务器日志显示:

13:38:22 web.1     | 2013-08-02 13:38:22 [48421] [CRITICAL] WORKER TIMEOUT (pid:48423) 
13:38:22 web.1     | 2013-08-02 13:38:22 [48421] [CRITICAL] WORKER TIMEOUT (pid:48423)
13:38:22 web.1     | 2013-08-02 13:38:22 [48444] [INFO] Booting worker with pid: 48444

【问题讨论】:

  • 网络服务器错误日志说什么?
  • @dan-klasson 更新了问题以显示网络服务器日志
  • 所以当我在 localhost 上尝试 https:// 时,它似乎永远不会加载,但是当我使用 https:// 加载实际站点时它可以工作。 https 不加载到本地主机上吗?

标签: python django https


【解决方案1】:

原来 https 在 localhost 上不起作用,这是我以前不知道的。

【讨论】:

    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 2019-04-20
    • 2011-10-18
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多