Django总是尝试与localhost建立SSL连接

时间:2017-02-07 10:36:13

标签: django google-chrome ssl heroku localhost

设置DEBUG = FalseSECURE_SSL_REDIRECT = True并将我的应用程序版本部署到服务器后,我希望现在可以在本地进一步开发。问题是,我认为有一次我忘记从settings.py中删除SECURE_SSL_REDIRECT = True,我用heroku local运行了本地开发服务器。我的本地浏览器总是尝试不使用SSL连接到localhost,因此它只是挂起。

我尝试在浏览器设置(Chrome)中删除localhost的站点特定cookie,但localhost现在仍然总是尝试建立SSL连接。

我正在尝试回到使用非SSL本地连接进行开发。任何想法?

Django版本1.10.2 Heroku的

由于

修改

似乎我清除所有缓存和cookie并重新启动浏览器,然后它将不会再次请求SSL。所以它似乎是一个浏览器问题。无论如何,如果有人知道如何在不清除Chrome中的所有数据的情况下完成此操作,那将不胜感激。

更新

我已经学会了一种更好的方法来处理这种情况。我已经设置了一些代码来自动检测软件是否在本地环境或云生产环境中运行,如下所示:

if os.environ.get('LOCAL'):
    DEBUG = True
    SECURE_SSL_REDIRECT = False
else:
    DEBUG = False
    SECURE_SSL_REDIRECT = True

当然,您必须注意设置environ对象,该对象在heroku中自动发生。

1 个答案:

答案 0 :(得分:1)

我正在针对本地(开发)和生产环境使用自定义设置。

例如: myproject / settings / dev.py

DEBUG = True
SECURE_SSL_REDIRECT = False
...

myproject / settings / production.py

DEBUG = False
SECURE_SSL_REDIRECT = True
...

然后我指定要使用的设置。在 localhost 上,如下所示: python myproject/manage.py runserver --settings=settings.dev

并使用Heroku Procfile 进行生产: web: gunicorn myproject.wsgi.production --log-file -

myproject / wsgi / production.py 的内容是:

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings.production")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

如果您使用heroku local进行本地开发,则可以使用本地wsgi文件创建类似的 Procfile.local