トップ回答者
Ajax通信時にユーザーエージェントが変わるのはなぜ?

質問
-
どなたかご存じの方がおられましたら、お願いします。Win7のIE9で普通にアクセスしているときのユーザーエージェントは、Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)ですが、jQueryでAjax通信したときはMozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CPNTDF; InfoPath.2; .NET4.0C; BRI/2)となる環境があります。これはなぜでしょうか?ちなみに私の同環境はそのようにはならず、ユーザーエージェントは同じままです。よろしくお願いします。
回答
-
Ajax通信(XMLHttpRequest)だけが変わるのではなく、IEはページが互換モードに切り替わった場合、モードに合わせてUser-Agent文字列も切り替えます。なのでページ内の画像取得の際もIE7になっているはずです。
Understanding user-agent stringsにもそのことに触れられています。(このページの日本語版には触れられていません。)
Beginning with Windows Internet Explorer 8, the version token reported in the user-agent string might not reflect the actual version of the browser. If Compatibility View is enabled for a webpage or the browser mode is set to an earlier version, the version token reports the earlier version.
同一のコンテンツに対して環境によって違うのは、IEの設定が異なるからでしょう。よくあるのが"イントラネットサイトを互換表示で表示する"の有効/無効の違いですが。
すべての返信
-
Ajax通信(XMLHttpRequest)だけが変わるのではなく、IEはページが互換モードに切り替わった場合、モードに合わせてUser-Agent文字列も切り替えます。なのでページ内の画像取得の際もIE7になっているはずです。
Understanding user-agent stringsにもそのことに触れられています。(このページの日本語版には触れられていません。)
Beginning with Windows Internet Explorer 8, the version token reported in the user-agent string might not reflect the actual version of the browser. If Compatibility View is enabled for a webpage or the browser mode is set to an earlier version, the version token reports the earlier version.
同一のコンテンツに対して環境によって違うのは、IEの設定が異なるからでしょう。よくあるのが"イントラネットサイトを互換表示で表示する"の有効/無効の違いですが。
-
うーん・・HTMLにもヘッダにも互換モード指定というものは入れていないのですが。。
ちなみにアクセスログから見ますと、
Ajax以降に画像ファイル3つ読み込んでいるのですが、それはIE9のままです。
まだ勘違いや見落としがあるのかもしれませんので、再度確認させていただきます!なるほど、むしろ条件の洗い出しを行うのも有意義なのかもしれません。
IE9のままなのは、再現する環境の話でよろしいでしょうか。
jQuery以外のAjax通信で再現可能か分かりますでしょうか?
# 手元で簡単ですが、確認してみましたが、私の環境についても同じUAのままとなってしまいました。。