こんにちは。
佐賀県はコロナの影響もそれほど大きくはないですが、全国的には大問題になっているところですね。
さて、そんな中ですが、DjangoというPythonでWEBアプリを開発するフレームワークがあるのですが、こちらで開発をしているときに、開発用サーバーにChromeなどでアクセスすることができないということがありましたので解決方法をあげておきたいと思います。
たとえば、こんな感じになります。
Djangoの開発用サーバーを立ち上げるコマンドである、
python manage.py runserver
を叩いたときの症状です。
このまま開発用サーバーである、127.0.0.1:8000にChromeなどでアクセスをしても下記の画像の通りにしか表示されないのではないでしょうか。
これは、Chromeなどではhttpsアクセスが標準化しているためにアクセスができないということになってしまっています。
今のところ、私の手元にあるブラウザではほとんどがアクセスすることができません。
というわけで、これをhttps化してしまえばOKということです。
サーバーにデプロイするときには、もちろんSSL証明などを取得してSSL化には対応するかと思います。ここでは、ローカル環境(DockerやVagrantなどを使用しないケース)での話を前提にしております。単純に、これだけのためにDockerの環境を導入するのは・・・と思っていらっしゃる方へ向けての解決策になります。
【 解決策 】
これを解決するための方法としては単純なんですが、django-sslserverというのをインストールしてあげれば大丈夫です!
pip install django-sslserver
簡単ですね。
そして、このライブラリを使うことをDjango側へ教えてあげる必要があります。
settings.pyを開いて、INSTALLED_APPSのところに追加してください。
INSTALLED_APPS = [ 'accounts.apps.AccountsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'sslserver', # 追加 ]
Djangoではお約束ですね。
でもこれだけでは開発用サーバーがSSL化されません。
SSLで開発用サーバーを立ち上げるためには、以下のコマンドでサーバーを立ち上げてください。
python manage.py runsslserver
これでSSL化されたサーバーを立ち上げることができたかと思います。
ただし、これはあくまで開発用サーバーを立ち上げるときの話なので、本番環境ではきちんとSSL証明書を取得してそれをNginxなりApacheなどに読み込ませてくださいね。