C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 177 を表示中)
■101765 / )  Re[1]: HTTP_USER_AGENTによる使用OS判定について
□投稿者/ 魔界の仮面弁士 (3621回)-(2023/04/17(Mon) 11:54:56)
2023/04/17(Mon) 12:48:19 編集(投稿者)

No101764 (のんちゃん さん) に返信
> windows11と10では同じバージョン(10.0)と判定されてしまい困っております。
> 11を判定するにはどうしたらよいかご存じの方いらっしゃいましたら宜しくお願い致します。

機密情報が含まれないようにするため、User-Agent の情報量は削減されています。
クライアント OS を判断する試みは行わないよう、運用を見直された方が良いでしょう。
https://developer.chrome.com/ja/docs/privacy-sandbox/user-agent/

現時点で取得するとなると、experimental (実験的) な API 頼りになりそう。


> sUA = Request.ServerVariables("HTTP_USER_AGENT")
USER-AGENT ヘッダーでは区別できないので、
User-Agent クライアント ヒント (UA-CH) API を用いて
SEC-CH-UA-PLATFORM と
SEC-CH-UA-PLATFORM-VERSION で判断します。(FireFox は対象外)


/*
const uaInfo = await navigator.userAgentData.getHighEntropyValues(["platformVersion"]);
console.log(uaInfo);
*/

navigator.userAgentData.getHighEntropyValues(["platformVersion"]).then(ua =>
{
 if (navigator.userAgentData.platform === "Windows") {
  console.log(ua.platformVersion);
 }
});

https://developer.mozilla.org/ja/docs/Web/API/NavigatorUAData/getHighEntropyValues
https://learn.microsoft.com/ja-jp/microsoft-edge/web-platform/how-to-detect-win11


事前に Accept-CH 要求の応答ヘッダーを付与しておくことで
それ以降の通信に対して User Agent Client Hints(Sec-Ch-Ua) を
サーバーへ送信させてサーバーサイド判定が可能となりますが、
この機構は http では利用できないため、
https 通信であることが前提になります。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-CH-UA-Platform-Version
https://http2.try-and-test.net/client_hints.html
返信 編集キー/


管理者用

- Child Tree -