HTTPアクセスのコーディング方法の違いによるUserAgentの差異
とある新聞社のWebサイトにて、自前のAndroidアプリでWebサイトを見ようとするとリダイレクトされるようになった。
(Android用サイトではなく、新聞社の専用Androidアプリの紹介ページに飛ぶという…。)
そこで、クライアントのUserAgentを見てWebサイト側で何かしているのだろうと考え、少し調べてみた。
※調査に使用した端末はNexus S (2.3.6)
※UserAgentの指定は特に行っていない
1. Java標準のHTTP接続API (java.net.HttpURLConnection) を使った場合
1Dalvik/1.4.0 (Linux; U; Android 2.3.6; Nexus S Build/GRK39F)
2. Android標準のHTTP接続API (org.apache.http.client.HttpClient) を使った場合
1Apache-HttpClient/UNAVAILABLE (java 1.4)
3. Android標準ブラウザやWebViewを使った場合
1Mozilla/5.0 (Linux; U; Android 2.3.6; ja-jp; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
冒頭のWebサイトでは、1.と3.の方法だとHTTPレスポンスコード 307 が返り、2.の方法だとPCと同じHTMLが返ってきた。
おそらくサーバ側でUserAgentに"Android"というワードがあるかチェックしているのだろう。