Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django always tries to establish SSL connection with localhost

After setting DEBUG = False, and SECURE_SSL_REDIRECT = True and deploying a version on my app to the server, I wish now to develop further locally. The problem is, I think at one point I forgot to remove the SECURE_SSL_REDIRECT = True from settings.py, and I ran the local dev server with heroku local. My local browser always tries not to connect to localhost with SSL, so it just hangs.

I tried removing the site-specific cookies for localhost in the browser settings (Chrome) but localhost now still always tries to establish an SSL connection.

I am trying just to get back to using a non-SSL local connection for development. Any Ideas?

Django version 1.10.2 Heroku

Thanks

EDIT

Seems if I clear ALL the cache and cookies and restart the browser then it will not ask for SSL again. So it seems to be a browser problem. Anyway if anyone has an idea of how to accomplish this without having to clear all the data in Chrome, that would be appreciated.

UPDATE

I have learned a better way to handle this situation. I have set up some code to automatically sense if the software is running on the local environment or the cloud production environment, like this:

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

Of course you have to take care of setting up the environ object, which happens automatically in heroku.

like image 984
jeffery_the_wind Avatar asked Sep 13 '25 13:09

jeffery_the_wind


1 Answers

I am using custom settings both for local (development) and production environments.

For instance: myproject/settings/dev.py

DEBUG = True
SECURE_SSL_REDIRECT = False
...

myproject/settings/production.py

DEBUG = False
SECURE_SSL_REDIRECT = True
...

And then I specify the settings I want to use. On localhost like this: python myproject/manage.py runserver --settings=settings.dev

and for production using the Heroku Procfile: web: gunicorn myproject.wsgi.production --log-file -

Content of myproject/wsgi/production.py is:

import os

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

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

If you use heroku local for your local development, you can create similar Procfile.local with local wsgi file.

like image 127
Erik Telepovský Avatar answered Sep 16 '25 09:09

Erik Telepovský