- PR -

Request.UserAgentについて

投稿者投稿内容
nabe
常連さん
会議室デビュー日: 2006/04/13
投稿数: 29
投稿日時: 2006-04-21 16:26
Request.UserAgentについてご教授お願いします。

今、ダウンロード処理にてダイアログが2回表示するという問題を解決するため、
Response.AddHeaderのContent-Dispositionをinlineにしました。
そうすると、win2000、winXP-SP1では正常に動作したのですが、
winXP-SP2では、フレームに表示してしまします。
winXP-SP2では、Content-Dispositionをattachmentで正常に動作するので、
OSが何か判断して振分けようと考えました。
で、Request.UserAgentにてブラウザ情報を取得して行おうと思います。
今のところ取得内容が
win2000
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)

winXP-SP1
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)

winXP-SP2
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

になっていました。
自分なりに調べたところでは"MSIE 6.0"はIEのバージョン、
.NET以下はフレームワークのバージョン まではわかりました。
上記取得情報から仮定すれば
win2000  ⇒ Windows NT 5.0
winXP-SP1 ⇒ Windows NT 5.1
winXP-SP2 ⇒ Windows NT 5.1;SV1
と考えているのですが、
この仮定は正しいでしょうか?
 

ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-04-21 16:46
とりあえず、簡単に。

UserAgentはブラウザが『勝手に』送っているものなので、必ずしもその値を送っているとは限りません。
現にOperaや一部タブブラウザなどでは変更可能ですし、その値からOSの種類を判別するのはよろしくありません。

なので
引用:

この仮定は正しいでしょうか?


に対しての回答は「正しくない場合が多いので、止めたほうが無難です」となります。

少なくとも自分ならばこのような回りくどい方法は使わず、元のダウンロード処理にて対処しようと考えます。
nabe
常連さん
会議室デビュー日: 2006/04/13
投稿数: 29
投稿日時: 2006-04-21 17:07
ぼび王子ありがとうございます。

ん〜どうしたらよいでしょう。
postをgetに変えると良いらしいのですが、
現状postでシステムが確立されているもので、
容易に変更できないのです。
元々、ダウンロード用のformを作成して別画面にて
起動していたんですが、OS、IEのバージョンによって
動作が違い、対応しようとしているのですが。。。。
もう少し頑張ってみます。


nabe
常連さん
会議室デビュー日: 2006/04/13
投稿数: 29
投稿日時: 2006-04-21 17:11
ちなみにブラウザはIEと限定しています。
それでも仮定は正しくないのでしょうか?
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-04-21 18:22
とりあえず、落ち着いて。

この問題は「正しい」か「正しくない」のどちらかで片付けられる簡単な問題ではないと思います。
IEだからこういったUserAgentを返すはず、というのはあくまで仮定でしかないですし、間にプロキシサーバをはさんだりすることでUserAgentが変更される可能性(これもあくまで可能性ですが)もあると思います。
元々の問題は「ダウンロードダイアログが2回表示される」ということですよね。そこからattachmentをinlineにしたり、いろいろと試行錯誤した結果UserAgentにたどり着いたのだと思いますが、これはまた別の話なのではないかと。

ダウンロードの話はまた別になりますので、元スレの方に書こうと思います。

[蛇足]
偉そうなことを言っていますが、実は私も同じ現象に遭遇した記憶がありますそのときは特に問題にならなかったのと、そういう仕様ですと言い張って逃げました(※良くない例です)。
[/蛇足]

#そうそう、ハンドル名は固有名詞なのでできれば気をつけて書いていただけるとありがたいです。敬称もあるとうれしいかも。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-04-23 00:04
引用:

ぽぴ王子さんの書き込み (2006-04-21 18:22) より:

この問題は「正しい」か「正しくない」のどちらかで片付けられる簡単な問題ではないと思います。
IEだからこういったUserAgentを返すはず、というのはあくまで仮定でしかないですし、間にプロキシサーバをはさんだりすることでUserAgentが変更される可能性(これもあくまで可能性ですが)もあると思います



UserAgent でレンダーされる HTML をブラウザごとに変えるぐらいなら
やってもいいかなーというのが僕の意見なんですけどどうでしょう
モバイル用のページなんかだと常套手段ですよね。

もっとも新しいブラウザなんかも出てくるのでそれの対応ができるように
作りこんだり修正する必要はあると思いますけどね


引用:

win2000  ⇒ Windows NT 5.0
winXP-SP1 ⇒ Windows NT 5.1
winXP-SP2 ⇒ Windows NT 5.1;SV1
と考えているのですが、
この仮定は正しいでしょうか?


IE6に限定すれば正しいのかな
nabe
常連さん
会議室デビュー日: 2006/04/13
投稿数: 29
投稿日時: 2006-04-24 09:34
ぼび王子、かるあ さんありがとうございます。
とりあえずもう少し考えてみます。
最低手段として、この方法で行おうと思います。
ありがとうございました。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-04-24 10:34
引用:

かるあさんの書き込み (2006-04-23 00:04) より:

UserAgent でレンダーされる HTML をブラウザごとに変えるぐらいなら
やってもいいかなーというのが僕の意見なんですけどどうでしょう
モバイル用のページなんかだと常套手段ですよね。


そうですね。UserAgent ごとに振り分ける必要性があって、それに対するメリットとデメリットを把握していれば大丈夫かも、とは思います。
今回の場合はダウンロード時の不具合に対する逃げの手段のように感じられたので「止めたほうが無難です」と書いてみました。
#「なんだかわからないがこれを外すとバグるので外すな」と書いてあるコメントみたいでなんかね

とりあえずnabeさんも最低(最終?)手段と書いていらっしゃいますので、考えていただくとして僕はこれぐらいで。

#しかしまだ名前が間違えられている気がする orz

スキルアップ/キャリアアップ(JOB@IT)