webプログラムでHTTP_REFERERを取得したいという話があったんですが,Androidの標準ブラウザからREFERERが送られてこないという現象がありました.
いわゆるガラケー時代にはREFERERが送られてこない端末なんて普通だったんで,まぁAndroidでもそういうのがあるのかしら?なんて思いましたが,どうやら違うようです.
「デフォルトで使用するブラウザ」が決まっていないとHTTP_REFERERが送られてきません.
原因についてははっきりとした資料を当たってないのですが,下記のように推測.
Android端末に標準以外にFirefoxやらOperaやらのブラウザを入れると,webサイトでページを移動する度に「アプリケーションを選択」という画面が出てきます.
おそらく内部的には毎回「URLを開く」というインテントが動くので,通常のブラウザ内での移動とは異なり,毎度毎度新規にURLを開いている扱いになるのだろうなぁと思います.
「常にこの操作で使用する」をチェックしてデフォルトのブラウザを決めてあげると,ちゃんとHTTP_REFERERが送られてきます.
まぁそうでなくてもHTTP_REFERERなんて偽装できちゃうもんだしアテにできないのですけどね.
—
書いてて思ったけど,cookieでセッション情報を保持している場合,途中でブラウザを変えちゃったらセッションの継続ができないよなぁ.
一般的な他のwebサービスとかだとそのへんは保証外にしてるんだろうなぁ.もしくはガラケーよろしくGETパラメータで引渡か…
@nacky そすね。リダイレクトとかでもインテント投げちゃいますね。LocationとRefreshで挙動違ったりします。思わぬ地雷になりがち。
—
とコメントいただきました
http://twitter.com/tnj/statuses/166573540513026048