ブラウザのスニッフィングをやめる

Operaブラウザー開発者のブログにはうらやましいほどの頻度で、Operaはこのページまたはそのページを解析できず、ユーザーには次のようなエラーが表示されるというメッセージが表示されます。







これらの リンクの いずれか 効果を確認できます 。 同時に、他の一般的なブラウザでは、ドキュメントをXMLではなくHTMLとして解析するように要求すると、Operaと同様に通常どおりページが表示されます(リンク「ドキュメントをHTMLとして再解析」)。



ある時点で、なぜこれが起こっているのかと思いました。 多くのオプションはありません。OperaはXMLを解析できません。他のブラウザは解析できます。または、他のブラウザはページをXMLとして解析しようとしませんが、HTMLであると見なします。 長い間原因を検索する必要はありませんでした。サーバーの応答であることが判明しました。

回答Opera



Firefoxの応答



サーバーは一部のブラウザーに単純に「嘘をつく」ことがわかりました。 同時に、User-Agent文字列のみに基づいて彼が決定を下すことを確かに言うことができます。 たとえば、Operaで、サイトのプロパティでブラウザIDをInternet ExplorerまたはFirefoxとして設定すると、ページが奇跡的に開き始めます。 逆もまた真です。Safariでユーザーエージェントを「Mozilla / 5.0(Windows; U; Windows NT 5.1; ru-RU)」に設定すると、おそらくapplication / xhtml + xmlのコンテンツも与えられ、解析もできなくなります。







Operaが苦しむだけでなく、「自分のもの」として認識されない他のブラウザも影響を受けることがわかりました。



このエラーが発生したすべての調査対象サイトには、ASP.NET 2.0で記述された共通点が1つあります。 これがMicrosoftチームの間違いなのか、それともそのようなサイトの自家製の管理者の仕事なのかはわかりません(ASP.NET 2.0で書かれたすべてのサイトがこのようなゴミに苦しむわけではありません)。 タイトルに書いた開発者にアドバイスをしたいだけです。



また、そのようなサイトのユーザーエージェントを変更することのみをユーザーにアドバイスできます。 同じOperaでは、これは壊れたサイトのプロパティの[ネットワーク]タブで実行できます。



All Articles