django で SSL を扱いたい(その2)

ちょっと前進したのでメモ。


共有SSL限定かもしれないけど、request.META['REMOTE_ADDR'] の値で SSL かどうかは見分けられそう。具体的には、

と、共有SSL経由かどうかで明確に違う(後者は共有SSLサーバのアドレスかな?)。あとは context_processor とかで判定して、パスを絶対パスに置き換えてやればできそう。また明日にでも試す。


ところでこの方法は共有SSLじゃなくてもいけるんだろうか?
SSLを使うときは、別にSSLサーバがあって、アドレスも変わるものなんだろうか?
これも調べる必要があるかなあ。


あと context_processor の見本とか。一応動くっぽい。

from django.conf import settings
from django.http import get_host

HTTPS_IP = '202.172.28.254'

def ssl_context(request):
    host = get_host(request)
    base_url = 'http://%s/' % host
    if 'REMOTE_ADDR' in request.META:
        addr = request.META['REMOTE_ADDR']
        if addr == HTTPS_IP:
            base_url =  'https://ss1.coressl.jp/%s/' % (host)
    return {
        'base_url' : base_url
    }