GAE BlobstoreでHTTPS経由で認証されたクッキーを見てくれない

September 15th, 2011

#先のエントリーとの時系列的な関係は完全無視で

MagoPicWebはGoogle App Engine(以下GAE)上に実装されています。これはドキュメントも英語版に限り非常によく整備されており、システムのデザインもとても綺麗なのであまり迷わずに採用しました。しかし、まだプレビュー版という事もあり、いろいろとハマりどころがあります。幸い、利用している開発者の数も膨大なため、大抵は先駆者が既にハマってくれていて、slashdot等でworkaroundが見つかります。

しかし、それほどイレギュラーな事をしていないにもかかわらずMagoPicの開発でもコマコマといくつかハマりました。レポートは大分前に出したのですが、昨日ようやくacknowledgeされた一件があったのでここでも紹介しておきます。

http://code.google.com/p/googleappengine/issues/detail?id=5282

まさにタイトルのまんまなのですが、GAEでHTTPS経由で認証されたセッションでBlobstoreへアップロードしたとき、BlobstoreUploadHandlerでセッション情報の取得に失敗します。いくつか回避法はありますが、とりあえず別にセッションIDを生成しておいてアップロード時のパラメーターで渡すようにさせるのが無難かと思います。パラメーターの代わりにcookieに突っ込んだり、あるいはサーバー側でフックしたり色々あるとおもうのですが、MagoPicWebではファイルのアップロードにPluploadというオープンソースのモジュールを使わせてもらっていて、これのFlashモジュールがアクティブな時にcookieが環境によってセットされなかったりされたり不審な動作をしてやはりはまったのでcookieはやめました。

蛇足ですが、GAEの残念な点として独自ドメイン経由HTTPSを使用する手段がないことが挙げられます。仕方なくMagoPicWebにPCからアクセスした場合はHTTPでの通信を行っていますが、Androidアプリ版からの通信はアドレスがユーザーの目に触れることはありませんので全部HTTPSです。

Leave a Reply

*