Tuesday, May 15, 2012

Android付属ブラウザのファイルダウンロードの動作

スマフォ向けのサイトから画像ファイルをHTTPのPOSTメソッド経由でダウンロードしようとすると画像が表示されない現象に会いました。

環境は以下のとおりです。

  • 機器:Android(Softbank 001HT)
  • ブラウザ:Android付属のブラウザ

サーバのログを確認すると、POSTの後にGETを受け取っていました。

検索したところ、以下の様なページを見つけました。

http://stackoverflow.com/questions/4674737/avoiding-content-type-issues-when-downloading-a-file-via-browser-on-android

http://code.google.com/p/android/issues/detail?id=1978

これらによると、AndroidのブラウザがPOSTメソッドでサーバにリクエストして、サーバからContent-Disposition:attachmentなヘッダを受け取ると、再びGETメソッドで同じURLにリクエストを送信するとのことです。
また、この動作はPCのブラウザとは違うのですが、バグでは無いようです。

対応方法としては、POSTメソッドとGETメソッドで処理を変えるとか、フォームデータの内容が見えてもよいのなら画像をダウンロードするURLには、GETメソッドでリクエストする等がありそうです。

No comments: