none
Ajax通信時にユーザーエージェントが変わるのはなぜ? RRS feed

  • 質問

  • どなたかご存じの方がおられましたら、お願いします。
    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)
    となる環境があります。
    これはなぜでしょうか?
    ちなみに私の同環境はそのようにはならず、ユーザーエージェントは同じままです。
    よろしくお願いします。
    2013年5月14日 9:20

回答

  • 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の設定が異なるからでしょう。よくあるのが"イントラネットサイトを互換表示で表示する"の有効/無効の違いですが。

    • 回答の候補に設定 星 睦美 2013年5月16日 5:18
    • 回答としてマーク 星 睦美 2013年5月21日 2:10
    2013年5月14日 12:18
  • 念のため、サイト内でUAが変わる理由について、補足させていただくと、

    HTMLをこれから取得しようとする際は、最新のUAで一旦リクエストをしておき、
    応答のHTMLやヘッダに互換モード指定があったため、そのサイトの希望を叶えるため、
    以降のリクエスト(Ajax含む)は互換モードのUAでリクエストされたというシナリオだと思っています。

    • 回答の候補に設定 星 睦美 2013年5月16日 5:18
    • 回答としてマーク 星 睦美 2013年5月21日 2:10
    2013年5月14日 14:41

すべての返信

  • 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の設定が異なるからでしょう。よくあるのが"イントラネットサイトを互換表示で表示する"の有効/無効の違いですが。

    • 回答の候補に設定 星 睦美 2013年5月16日 5:18
    • 回答としてマーク 星 睦美 2013年5月21日 2:10
    2013年5月14日 12:18
  • 念のため、サイト内でUAが変わる理由について、補足させていただくと、

    HTMLをこれから取得しようとする際は、最新のUAで一旦リクエストをしておき、
    応答のHTMLやヘッダに互換モード指定があったため、そのサイトの希望を叶えるため、
    以降のリクエスト(Ajax含む)は互換モードのUAでリクエストされたというシナリオだと思っています。

    • 回答の候補に設定 星 睦美 2013年5月16日 5:18
    • 回答としてマーク 星 睦美 2013年5月21日 2:10
    2013年5月14日 14:41
  • 早速ご回答いただきましてありがとうございます。

    そのような仕様なのですね。。とても勉強になりました。

    ただ、画像取得のアクセスログを見ますとこちらはIE9.0となってました。

    またそのあたりの設定も何かあるのでしょうか。。

    イントラネットの設定試してみます。

    ありがとうございます!

    2013年5月16日 3:28
  • ご回答いただきましてありがとうございます。

    うーん・・HTMLにもヘッダにも互換モード指定というものは入れていないのですが。。

    ちなみにアクセスログから見ますと、

    Ajax以降に画像ファイル3つ読み込んでいるのですが、それはIE9のままです。

    まだ勘違いや見落としがあるのかもしれませんので、再度確認させていただきます!

    2013年5月16日 3:38
  • フォーラム オペレーターの星 睦美です。
    yamada_730 さん、こんにちは。

    私のほうで佐祐理 さんと(´・ω・`)さんからの返信に[回答の候補に設定] しました。

    yamada_730 さんの質問に役立つ内容の場合には、コミュニティで情報共有するために投稿者から[回答としてマーク] いただければ幸いです。

    これからもMSDN フォーラムをよろしくお願いします。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美

    2013年5月16日 5:27
  • うーん・・HTMLにもヘッダにも互換モード指定というものは入れていないのですが。。
    ちなみにアクセスログから見ますと、
    Ajax以降に画像ファイル3つ読み込んでいるのですが、それはIE9のままです。
    まだ勘違いや見落としがあるのかもしれませんので、再度確認させていただきます!

    なるほど、むしろ条件の洗い出しを行うのも有意義なのかもしれません。
    IE9のままなのは、再現する環境の話でよろしいでしょうか。
     
    jQuery以外のAjax通信で再現可能か分かりますでしょうか?
    # 手元で簡単ですが、確認してみましたが、私の環境についても同じUAのままとなってしまいました。。

    2013年5月16日 13:52
  • yamada_730 さん

    佐祐理 さんと(´・ω・`)さんからの返信が質問の事象が発生する条件を確認する手がかりになったようですので
    私のほうでスレッドに[回答としてマーク] させていただきました。

    yamada_730 さんが調査した結果、もしフォーラムで引き続き質問したい場合には新しいスレッドを作成いただければと思います。

    それでは今後ともフォーラムをお役立てください。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美

    2013年5月21日 2:40