「GAE + python + tweepy」で、WARNING「Stripped prohibited headers from URLFetch request: [‘Host’]」が出力される件

GoogleAppEngine上でTwitterAPIにアクセスするアプリを作っていたら、
「Stripped prohibited headers from URLFetch request: [‘Host’]」が出力された。

調べてみたら、GAEでは、セキュリティ上の理由から、以下のHTTPヘッダは許可されていないようだった。
(参考)Stripped prohibited headers from URLFetch request: [‘Host’] · Issue #91 · tweepy/tweepy · GitHub

 
For security reasons, the following headers cannot be modified by the application:

    Accept-Encoding
        Content-Length
        Host
        Vary
        Via
        X-Forwarded-For

These headers are set to accurate values by App Engine, as appropriate.

僕が使っている環境
Windows7(64Bit)
Python 2.7.3
Tweepy 2.0
Google App Engine SDK for Python 1.7.1
Aptana Studio 3.2.2


Tweepyのソースを見てみると、binder.pyの67行目あたりで、

self.headers['Host'] = self.host

が設定されていた。おそらく、これが原因。
ためしに、コメントアウトしてみると、WARNINGが出なくなった。

ただ、少し悩んだ結果、そのまま(コメントアウトしないこと)にしておくことにした。
たとえば、ブラウザでインターネットに接続したとき、ブラウザから送信されるHTTPリクエストには、自動的に

Host: www.xxx.zzz

が設定される。
そして、実際にインターネットに接続された場合、プロバイダのホスト名に置き換わって、リクエストが送信される。
HTTPヘッダに「Host:~~」が設定されるのは、よくあることかなって思った。

あと、GAEの本番環境にアプリをUploadして動かしてみると、ログにWARNINGが出ていない。
なので、Tweepyのソースを回収しなくてもいいかなって、そういう結論に落ちついた。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s