使用Django创建HTTPS站点

时间:2013-08-02 20:25:21

标签: python django https

我正在使用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

1 个答案:

答案 0 :(得分:1)

原来https不能在localhost上运行,我之前不知道。