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