1

Microsoft Edge で動作する Web サイトをテストしていたところ、奇妙なことに ExtJS 3.2.1 がそれ​​を Chrome として検出しました (使用Ext.isChromeすると が返されましたtrue)。他の誰かが以前にこの問題に直面したことがありますか? もしそうなら、回避策はありますか?

これはユーザー エージェント文字列です。

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.9600
4

1 に答える 1

5

それは予想されることです。このブログ投稿でその理由を詳しく説明します。

Neowin は最近、Microsoft の Windows 10 用の新しいブラウザ Spartan が Chrome UA 文字列「Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (Gecko のような KHTML) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0」を使用していると報告しました。 」。 それは意図的に行われます。

また、文字列全体が「Edge/12.0」で終わっていることにも気付くでしょうが、Chrome にはありません。

これは、Microsoft が IE 11 で行ったことからの根本的な逸脱ではないことを指摘しておく必要があります。IE 11 では、Windows 8 で次のように表示されます。役職。

ユーザー エージェント スニッフィングとは何ですか?

多くの場合、Web 開発者はブラウザの検出に UA スニッフィングを使用します。Mozilla はブログでよく説明しています。

さまざまな Web ページやサービスをさまざまなブラウザーに提供することは、通常はお勧めできません。Web は、使用しているブラウザーやデバイスに関係なく、すべての人がアクセスできるようになっています。特定のブラウザーをターゲットにするのではなく、機能の可用性に基づいて Web サイトを徐々に強化するように Web サイトを開発する方法があります。

これは、ユーザー エージェントの歴史を説明する素晴らしい記事です。

多くの場合、怠惰な開発者は UA 文字列を盗聴し、閲覧者が使用しているブラウザに基づいて Web サイトのコンテンツを無効にします。Internet Explorer 8 は、開発者にとって不満の共通点であるため、ユーザーが IE のいずれかのバージョンを使用しているかどうかを頻繁に確認し、機能を無効にします。

Edge チームは、ブログでこれをさらに詳しく説明しています。

すべてのユーザー エージェント文字列には、実際に使用しているブラウザーよりも他のブラウザーに関する情報が含まれています。トークンだけでなく、「意味のある」バージョン番号も含まれています。

Internet Explorer 11 の UA 文字列:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) Gecko など

Microsoft Edge UA 文字列:

Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (Gecko のような KHTML) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136

userAgent プロパティは、W3C の議論で Patrick H. Lauke によって「増え続ける嘘のパック」として適切に説明されています。(「むしろ、実際に有用で正確な情報を少しだけ伝えようとしながら、古い UA スニッフィング コードがすぐに機能しなくなることのないように、十分な数のレガシー キーワードを追加するというバランスをとる行為です。」)

Web 開発者は、UA スニッフィングをできるだけ避けることをお勧めします。最新の Web プラットフォームの機能は、ほぼすべて簡単な方法で検出できます。この 1 年間で、Microsoft Edge を検出するように更新された UA スニッフィング サイトがいくつか見られましたが、レガシー IE11 コード パスを提供するためだけでした。Microsoft Edge は IE11 の動作ではなく、'WebKit' の動作に一致するため、これは最善の方法ではありません (Edge と WebKit の違いは、修正が必要なバグです)。

私たちの経験では、Microsoft Edge はこれらのサイトの 'WebKit' コード パスで最適に動作します。また、インターネットがさまざまなデバイスで利用できるようになっているため、未知のブラウザーも適切であると想定してください。サイトを現在既知の少数のブラウザーのみで動作するように制限しないでください。これを行うと、サイトはほぼ確実に将来壊れます。

結論

Chrome UA 文字列を提示することで、これらの開発者が使用しているハッキングを回避して、ユーザーに最高のエクスペリエンスを提供できます。

于 2015-07-07T21:34:36.523 に答える