■101773 / inTopicNo.5) |
Re[3]: HTTP_USER_AGENTによる使用OS判定について |
□投稿者/ 魔界の仮面弁士 (3622回)-(2023/04/17(Mon) 16:01:13)
|
2023/04/17(Mon) 19:16:16 編集(投稿者)
全文引用は避けてください。
■No101770 (のんちゃん さん) に返信 > 以下処理を Sub OsInfo()内に記述するとエラーとなってしまいます。
いやいや。 提示した navigator.userAgentData は、 見ての通りクライアント スクリプトですよ?
サーバーサイドで処理する場合の手順は、その後の後半部に述べた通り、 サーバー側から「Accept-CH: 〜」の Response Header を付与しておかねばなりません。 そうしないと、クライアント側がバージョン情報を送信してくれません。
まずはクライアント側に拡張情報の送信をブラウザーへ依頼するために、 IIS マネージャーの「HTTP 応答ヘッダー」にて、 名前:Accept-CH 値:Sec-CH-UA, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version などとして、カンマ区切りで必要な情報を載せます。
そうすると、上記の Response Header での求めに応じて、ブラウザー側から user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 sec-ch-ua-platform: "Windows" sec-ch-ua-platform-version: "10.0.0" あるいは user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.48 sec-ch-ua-platform: "Windows" sec-ch-ua-platform-version: "15.0.0" といった具合に、User-Agent ヘッダーに加えて、 Sec-Ch-UA-何某の Request Header がサーバーに対して ブラウザから送出されるようになります。 この状態になった後であれば、サーバー側処理でも、 Request.ServerVariables か Request.Headers で読み取れるはず…? → もしかしたら違うかも。 https://kkamegawa.hatenablog.jp/entry/20080116/p2 Sec-CH-UA-Platform が "windows" を返す状態において、 Sec-CH-UA-Platform-Version が "1.0.0"〜"10.0.0" なら Win10、 Sec-CH-UA-Platform-Version が "13.0.0" 以上なら Win11 です。
・Sec-CH 要求が無いとバージョン等の送信は行われないため、 仕組み上、初回要求に対してはバージョン情報が含まれません。 クライアント要求に Sec-CH が含まれるのは、 サーバー応答の Accept-CH を受けてからの 2 回目以降のリクエストに限られます。 ・Sec-CH の送信には https 通信が必須です。 SSL/TLS サーバー証明書が無い環境へは送信されません。 ・この方式に対応しているブラウザーは、Chrome と Edge です。 IE、Firefox、Safari ではサポートされていません。 ・Accept-CH は常時上書きです。 他の場所で、その他の SEC-CH 情報が必要な場合は、 Accept-CH パラメーターにその他の情報も付与しておきましょう。 (Sec-CH-UA-WoW64, Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version-List など) ・この情報は同一セッションにおいてのみ有効です。 ブラウザの再起動や再ログイン時には、サーバー側は Accept-CH による送信依頼処理からやり直す必要があります。
追記:
実際どんな値が返るか試してみたい場合は、 https://user-agent-client-hints.glitch.me/headers https://user-agent-client-hints.glitch.me/ を使うことができます。
|
|