他社のサービスに遷移するテストなどが必要なことが何度かあった。

何か指定のサイトにパラメータを POST してそのサイトのサービスに遷移するといったものなのだが、遷移先のサイトを作ることなどできないので、せめて POST したパラメータを見たいということはないだろうか。

以下のような cgi で、表示することができるだろう。

#!/usr/bin/env python3

import cgi
import os

print('Content-type: text/plain')
print('')
if 'HTTP_REFERER' in os.environ:
	print("referer:", os.environ['HTTP_REFERER'])
print "method:", os.environ['REQUEST_METHOD']
print "query string:", os.environ['QUERY_STRING']

form = cgi.FieldStorage()
for k in form.keys():
	print "key/value:", k, '/', form.getvalue(k)

さて、この cgi を web サーバに置いてもよいのだが、テストなので web サーバを立てるのもめんどうだ・・・という時に、何か方法はないのだろうか。

例えば、test というディレクトリを作って、その下に cgi-bin ディクレトリを作る。この cgi-bin ディレクトリに、先程のスクリプトを post-test.py などとして置く。(拡張子を .py にするのは、windows server で動かすためだが。)

その上で、test ディレクトリで、以下を実行する。

python3 -m http.server 8000 --cgi

以下のようにして確認できるだろう。

curl -s -X POST -F hoge=hogehoge http://localhost:8000/cgi-bin/post-test.py