質問: cgi.FieldStorage() form['url'].value ``` という形で取得しています。 jsでencodeURIComponentする前のURLが「」のような場合には問題なく取得できるのですが「」のようにこちらにもget引数がついていると、その部分がcgi.FieldStorage()で取得されてしまい、逆に'url'というキーの値がない、という状態になっています。 こういう場合、pythonではどのように受け取るべきなのでしょうか。 ちなみに、リクエストしているURLを直接ブラウザで叩いても同じ状態になります。
回答: 僕がテストする限りとくに問題なく動きました。ブラウザのJavaScriptコンソールで`encodeURIComponent('http://example.com/?hoge=fuga')`とすると`http%3A%2F%2Fexample.com%2F%3Fhoge%3Dfuga`が得られます。 テストプログラム test.py ``` #!/usr/bin/env python import cgi form = cgi.FieldStorage() print 'Content-Type: text/html' print print form['url'].value ``` 端末で ``` mkdir cgi-bin # 上のtest.pyをcgi-binの下に保存して実行属性をつける chmod 755 cgi-bin/test.py # CGIサーバ起動 python -m CGIHTTPServer ``` ブラウザで`http://localhost:8000/cgi-bin/test.py?url=http%3A%2F%2Fexample.com%2F%3Fhoge%3Dfuga`をアクセス ソースを確認すると`http://example.com/?hoge=fuga`が正しく得られました。