Google App Engine:環境変数 HTTP_REFERER などを取得する。
os モジュールをインポートすると、環境変数が扱えます。
環境変数は、os.environ にマップ・オブジェクトとして格納されます。
また、os.getenv() メソッドは、第一引数に環境変数の名前を指定して、その値を取得できます。第二引数を指定すると、該当する環境変数が存在しない場合にその第二引数(指定しない場合は None)を返します。
Google App Engine でWEBアプリケーションを構築する場合、HTTP_REFERER などの環境変数を扱いたいときもあります。そのような時は、この os.getenv() メソッドを利用するといいでしょう。
開発用サーバーで試したスクリプトを掲載しておきます。
import cgi from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app import os class MainPage(webapp.RequestHandler): def get(self): _env = ( 'HTTP_ACCEPT' ,'HTTP_ACCEPT_CHARSET' ,'HTTP_ACCEPT_ENCODING' ,'HTTP_ACCEPT_LANGUAGE' ,'HTTP_CONNECTION' ,'HTTP_HOST' ,'HTTP_PRAGMA' ,'HTTP_REFERER' ,'HTTP_USER_AGENT' ,'QUERY_STRING' ,'CONTENT_TYPE' ,'GATEWAY_INTERFACE' ,'CONTENT_LENGTH' ,'REMOTE_ADDR' ,'REMOTE_HOST' ,'REMOTE_IDENT' ,'REMOTE_PORT' ,'REMOTE_USER' ,'REQUEST_METHOD' ) _listEnv = [] for i in _env: print i + ':' print os.getenv(i, '**Not Exist**') application = webapp.WSGIApplication([ ('/.*', MainPage) ], debug=True) def main(): run_wsgi_app(application) if __name__ == "__main__": main()
次のものが、"**Not Exist**" と表示されました。
- HTTP_ACCEPT_ENCODING
- HTTP_PRAGMA
- REMOTE_HOST
- REMOTE_IDENT
- REMOTE_PORT
- REMOTE_USER