ホームページ ウェブフロントエンド CSSチュートリアル 凍結ユーザーエージェント文字列

凍結ユーザーエージェント文字列

Apr 11, 2025 am 11:20 AM

Chromeやその他の主要なブラウザは、ユーザーエージェントの文字列をフリーズしようとしています。これは、ユーザーエージェント文字列がまだ存在することを意味します(リクエストヘッダーに表示され、 navigator.userAgentを介してjavascriptでアクセス可能です)が、ブラウザ/プラットフォーム/バージョンを検出する機能は時間とともに減少します。 Googleは、この動きはユーザーのプライバシーを保護し、指紋の認識を防ぐことであると公式に説明しました。

フロントエンド開発フィールドは常に推奨されています。ユーザーエージェントの検出を避けてください。多くのWebサイトは、ユーザーエージェントの検出を誤って使用しているため、善よりも害を及ぼします。ユーザーエージェントの検出を回避する最良の方法は、実際の要件に基づいてテストすることです。

ブラウザが特定の機能をサポートするかどうかをテストする必要がありますか?ブラウザが機能をサポートする必要があると仮定する抽象的な概念に依存するのではなく、機能を直接テストします。

JavaScriptでは、多くの機能をテストすることは非常に簡単です。APIが存在するかどうかを確認してください。

 if(navigator.geolocation){
  navigator.geolocation.getCurrentPosition(showposition);
} それ以外 {
  console.warn( "ジオロケーションがサポートされていない");
}
ログイン後にコピー

CSSでは、 @supportsネイティブメカニズムを使用できます。

 @supports(display:grid){
  。主要 {
    ディスプレイ:グリッド;
  }
}
ログイン後にコピー

これは、ブール値を返すJavaScript APIによって検出できます。

 css.supports( "display:flex");
ログイン後にコピー

すべてのWebプラットフォーム機能がテストが簡単であるわけではありませんが、通常、ユーザーエージェントプロービングは必要ありません。困難に遭遇した場合、Modernizrが対応するテストを提供するかどうかを確認できます。これは、適切にテストされており、予見しない可能性のあるエッジケースを処理するため、機能テストのゴールドスタンダードです。 Modernizrライブラリを使用して、明確な論理ブランチを取得します。

 if(Modernizr.RequestanimationFrame){
  //サポート} else {
  //サポートされていない}
ログイン後にコピー

ブラウザの種類、プラットフォーム、およびバージョンを本当に知る必要がある場合は、ユーザーエージェントクライアントのヒント(UA-CH)を使用できます。

たとえば、プラットフォーム情報を取得するには、リクエストにSec-CH-Platformヘッダーを設定できます。これは、理論的には応答で取得できます。これには、情報の積極的なリクエストが必要であり、それにより問題のあるプライバシーフィンガープリント認識の問題を回避します。同様に、モバイルデバイスを検出するためのSec-CH-Mobileヘッダーがありますが、これはいくつかの疑問を提起します。「モバイル」デバイスは何ですか?この情報に基づいてどのように決定を下すべきですか?

通常、サーバー側のブラウザ、プラットフォーム、およびバージョンの情報を理解することが望ましいです(さまざまな状況で異なるコードを送信します)。これはクライアント側と同じくらい重要ですが、サーバー側ではテストすることはできません。フローズンユーザーエージェント文字列は、サーバーがUA-CHの使用に移行できるように十分に長く持続できるはずです。

ジョン・アルネ・セテレスは懸念を表明した:

私は15年以上にわたってモバイルWebフィールドで働いてきましたが、大小を問わず、ユーザーエージェントヘッダーに基づいてデバイスの検出に依存している多くのWebサイトがあることを知っています。 Googleの観点から見ると、UA-CHに切り替えるのは簡単ですが、それはまさにこの変更を促進するチームがその影響を理解していない場所です。

デバイス検出ベースの機能は、フロントエンドコードだけでなく、非常に重要であり、広く使用されています。大規模なソフトウェアシステムとそのバックエンドコードは、インフラストラクチャスタック全体と同様に、デバイスの検出に依存しています。

私のメインコードベースでは、少量のサーバー側UA検出を行います。フレンドリーなAPIでUA由来の情報を公開するブラウザと呼ばれるRails Gemを使用します。私はこのように書くことができます:

 browser.safariの場合?
  #Safariコードエンド
ログイン後にコピー

また、クライアントで使用するために、クライアントにこの宝石の情報を公開します。フロントエンドとバックエンドに使用するインスタンスはわずかしかなく、これらのインスタンスは他の方法で簡単に処理されるようです。

過去には、最初のページが読み込まれたときに役立つ方法でフロントエンド情報をサーバーに戻すのは少し難しいことでした(UAがビューポートのサイズやその他の情報を知らなかったため)。非常に賢い操作を行って、スケルトンページを読み込み、ビューポートの幅と画面サイズを測定するためにJavaScriptコードの小さな部分を実行してから、Cookieを設定してページを強制的に更新しました。 Cookieが存在する場合、サーバーには必要な情報があり、これらのリクエストではスケルトンページがまったくロードされません。

これは複雑ですが、サーバーはサーバー側のビューポート幅情報を取得できます。これは、小さな画面リソース(異なるHTMLなど)を送信するなどの操作に非常に役立ちます。これは不可能です。

UA-CHを通常のクライアントプロンプトと混同してはならないため、これについて言及しました。 Accept-CHヘッダーを送信するようにサーバーを構成し、クライアントが送信される情報をホワイトリストにコードさせることができるはずです。たとえば

<meta content="DPR, Viewport-Width" http-equiv="Accept-CH">
ログイン後にコピー

これは、サーバーが後続のページの読み込みでクライアントからこの情報を取得できることを意味します。これは素晴らしいAPIですが、FirefoxとSafariはそれをサポートしていません。両方のブラウザがUA-CHに興味を持っている場合、UA文字列が凍結されているため、改善されるかどうか疑問に思います。

凍結ユーザーエージェント文字列

以上が凍結ユーザーエージェント文字列の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Googleフォント変数フォント Googleフォント変数フォント Apr 09, 2025 am 10:42 AM

Google Fontsが新しいデザイン(ツイート)を展開したようです。最後の大きな再設計と比較して、これははるかに反復的です。違いをほとんど伝えることができません

HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法 HTML、CSS、JavaScriptを使用してアニメーションカウントダウンタイマーを作成する方法 Apr 11, 2025 am 11:29 AM

プロジェクトにカウントダウンタイマーが必要だったことはありますか?そのようなことのために、プラグインに手を伸ばすのは自然なことかもしれませんが、実際にはもっとたくさんあります

HTMLデータ属性ガイド HTMLデータ属性ガイド Apr 11, 2025 am 11:50 AM

HTML、CSS、およびJavaScriptのデータ属性について知りたいと思っていたことはすべて。

CSSを介してファーストクラスの名前アイテムを使用して子要素を選択する方法は? CSSを介してファーストクラスの名前アイテムを使用して子要素を選択する方法は? Apr 05, 2025 pm 11:24 PM

要素の数が固定されていない場合、CSSを介して指定されたクラス名の最初の子要素を選択する方法。 HTML構造を処理するとき、あなたはしばしば異なる要素に遭遇します...

フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? Apr 05, 2025 pm 05:51 PM

フレックスレイアウトの紫色のスラッシュ領域に関する質問フレックスレイアウトを使用すると、開発者ツールなどの混乱する現象に遭遇する可能性があります(D ...

SASSをより速くするための概念の証明 SASSをより速くするための概念の証明 Apr 16, 2025 am 10:38 AM

新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

SVGでタータンパターンを生成する静的サイトを作成する方法 SVGでタータンパターンを生成する静的サイトを作成する方法 Apr 09, 2025 am 11:29 AM

タータンは、スコットランド、特にファッショナブルなキルトに通常関連する模様のある布です。 Tartanify.comでは、5,000を超えるTartanを集めました

See all articles