Django

DjangoでHTTPSリダイレクトを実装する【Python】

PythonフレームワークのDjangoで、HTTP通信でのアクセスを、自動的にHTTPS通信に変更する方法。
settings.pyにたった一行追加するだけであり、とても簡単だった。

この記事は、
・すでにデプロイ済みのDjangoアプリケーションがあること
・SSL通信のための証明書を取得していること
を前提としている。

本記事の構成

この記事の構成は以下の通り。

  1. settings.pyの編集
  2. 参考サイト

settings.pyの編集

settings.pyに以下の一行を追加するだけで、HTTPSリダイレクトが実装できる。

  SECURE_SSL_REDIRECT = True

これでおしまい。
非常に簡単。

参考サイト

参考にしたのはDjangoの公式ドキュメント

たったこれだけではあるが、英文で読みにくいと思うので一応和訳も載せておく。

引用

SSL_REDIRECTの初期値はFalse。
この値がTrueの場合、SecurityMiddlewareはHTTPS以外のすべての要求をHTTPSにリダイレクトする。
(SECURE_REDIRECT_EXEMPTにリストされている正規表現に一致するURLを除く)

注釈
これをTrueにすると、無限のリダイレクトが発生する可能性がある。
これは、サイトがプロキシの背後で実行されており、どの要求が安全で、どれが安全でないかを判断できない可能性があるからである。
セキュリティで保護された要求を示すヘッダーを設定し、そのヘッダーが何であるかを調べ、それに応じてSECURE_PROXY_SSL_HEADER設定を構成することで、問題を修正できる。

まとめ

たったこれだけでHTTPSリダイレクトが完成してしまった。
このブログで使用しているwordpressはPHPで作られているので、HTTPSリダイレクトのためには、.htaccessを使用したが、もう少し面倒だったように記憶している。
現状は完全にブラックボックスで、背後でどんな動きをしているかは全く理解できていないので、今後は理論的な部分も勉強していこうと思う。

COMMENT

メールアドレスが公開されることはありません。