FOMAで見れないページ

以前、インプレス社のAKIBA PC Hotline!iモード版FOMAで見ることができないということを紹介したことがあります。この件について少々掘り下げて調べてみました。

なお、AKIBA PC Hotline!のサイトを題材として取り上げているのは筆者がAKIBA PC Hotline!で初めて気づいた現象であるために取り上げているだけで、それ以上の意味はないことをあらかじめ述べておきます。

FOMAでiモード版AKIBA PC Hotline!を見ようとすると、

無効なデータを受信しました(502)
Your request cannot be processed.
Please try again later.(502)

と表示されます。しかし、同じページを従来のiモード機で表示すると問題なく見ることができます。このことからFOMAと従来機では異なる点があることがわかります。そこで、両者がHTTPでどのようにやり取りをしているかを調べてみました。

まずFOMA P2101Vでiモードを使用した際にWebサーバーに送られるリクエストをキャプチャしてみました。その結果を以下に示します。(実際のプロトコルでは「www.localhost.net」はアクセス対象のドメイン名が入ります。)

GET / HTTP/1.1
Host: www.localhost.net
User-Agent: DoCoMo/2.0 P2101V(c100)
Accept: */*
Accept-Language: ja

次にSO503iで同様にキャプチャした結果を以下に示します。(これも実際のプロトコルでは「www.localhost.net」はアクセス対象のドメイン名が入ります。)

GET / HTTP/1.0
Host: www.localhost.net
User-Agent: DoCoMo/1.0/SO503i/c10

このようにFOMAではHTTP/1.1で、従来機ではHTTP/1.0でアクセスしていることがわかります。(そのこと自体は仕様として公開されています。)その他にはFOMAでは許容するMIMEタイプ(=全て)と言語(=日本語)を送っていますが、これは特別なことではありません。

このリクエストに対してAKIBA PC Hotline!のWebサーバーがどのように応答するかを調べた結果(ヘッダ部分のみ)を以下に示します。

FOMA P2101Vに対する応答
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Thu, 17 Jan 2002 01:58:12 GMT
Content-Type: text/html
Set-Cookie: NGUserID=ac140441-194-1011232692-2; expires=Wednesday, 30-Dec-2037 16:00:00 GMT; path=/(以下、エンティティボディが続きます。)
SO503iに対する応答
HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Thu, 17 Jan 2002 02:00:26 GMT
Content-Type: text/html
Set-Cookie: NGUserID=ac140441-194-1011232826-1; expires=Wednesday, 30-Dec-2037 16:00:00 GMT; path=/(以下、エンティティボディが続きます。)

このように応答に実質的な差がないことがわかります。(Set-Cookieはクッキーをブラウザに投げるためのヘッダです。これはユニークビジターを認識するために一般的に行われているクッキー設定です。このため、この行のみFOMA P2101VとSO503iで異なる内容が投げられています。)

この得られた情報を元に、エンティティボディのみ別のものとして同じヘッダを返すプログラムを作成してFOMA P2101Vで接続してみたところ、やはり先ほどのエラーメッセージが出てエンティティボディの表示を行うことができませんでした。

このことから問題はヘッダにあることがわかります。そこでいろいろとヘッダに手を加えてみたところ、Content-Lengthを加えると例のエラーメッセージが出なくなることがわかりました。やはりiモードではContent-Lengthは必須ということです。特にHTTP/1.1の場合、このヘッダが存在しないとFOMAでは表示不可能になるようです。HTTP/1.0であれば問題なく表示できます。これは、Keep-Aliveを含む可能性のあるHTTP/1.1の実装に関するFOMA用iモードセンターサーバーの制限なのでしょう。

余談になりますが、ここで紹介したリクエスト時とレスポンス時のヘッダ部分もパケット通信料に反映されます。リクエスト時のヘッダは固定なので仕方ありませんが、サーバー側のレスポンスはできる限り余計なヘッダを返さないように設定した方がユーザーにとってうれしいサイトといえます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です