httpのアクセス時にはUser-Agent Client Hintsの値はクライアントから送信されないため、空になります。
Sec-CH-UA
の値を読み取ります。using Microsoft.AspNetCore.Http;
namespace UserAgentHint
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", async context =>
{
string UAHint = context.Request.Headers["Sec-CH-UA"];
await context.Response.WriteAsync(UAHint);
});
app.Run();
}
}
}
app.MapGet("/", async context =>
{
});
Sec-CH-UA
の値を UAHint変数に代入します。 string UAHint = context.Request.Headers["Sec-CH-UA"];
await context.Response.WriteAsync(UAHint);
"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"
namespace UserAgentHint
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
app.UseRouting();
app.MapRazorPages();
app.Run();
}
}
}
@page
@model UserAgentHint.Pages.IndexModel
@{
}
<html>
<head>
<title>User-Agent Client Hints Demo</title>
</head>
<body>
<h1>User-Agent Client Hintsのデモ</h1>
<p>User-Agent Client Hints : @Model.UAHint</p>
<p>UACHints Mobile : @Model.UAHintMobile</p>
<p>UACHints FullVersion : @Model.UAHintFullVersion</p>
<p>UACHints Platform : @Model.UAHintPlatform</p>
<p>UACHints PlatformVersion : @Model.UAHintPlatformVersion</p>
<p>UACHints Arch : @Model.UAHintArch</p>
<p>UACHints Bitness : @Model.UAHintBitness</p>
<p>UACHints Model : @Model.UAHintModel</p>
</body>
</html>
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace UserAgentHint.Pages
{
public class IndexModel : PageModel
{
public string UAHint { get; set; }
public string UAHintMobile { get; set; }
public string UAHintFullVersion { get; set; }
public string UAHintPlatform { get; set; }
public string UAHintPlatformVersion { get; set; }
public string UAHintArch { get; set; }
public string UAHintBitness { get; set; }
public string UAHintModel { get; set; }
public void OnGet()
{
UAHint = Request.Headers["Sec-CH-UA"];
UAHintMobile = Request.Headers["Sec-CH-UA-Mobile"];
UAHintFullVersion = Request.Headers["Sec-CH-UA-Full-Version"];
UAHintPlatform = Request.Headers["Sec-CH-UA-Platform"];
UAHintPlatformVersion = Request.Headers["Sec-CH-UA-Platform-Version"];
UAHintArch = Request.Headers["Sec-CH-UA-Arch"];
UAHintBitness = Request.Headers["Sec-CH-UA-Bitness"];
UAHintModel = Request.Headers["Sec-CH-UA-Model"];
}
}
}
ヘッダ名 | 意味 |
---|---|
Sec-CH-UA | User-Agent Client Hints の文字列 |
Sec-CH-UA-Mobile | モバイルアクセスの情報 |
Sec-CH-UA-Full-Version | ブラウザのフルバージョン |
Sec-CH-UA-Platform | プラットフォーム |
Sec-CH-UA-Platform-Version | プラットフォームのバージョン |
Sec-CH-UA-Arch | アクセス端末のアーキテクチャ |
Sec-CH-UA-Bitness | アクセス端末のCPUビット数 |
Sec-CH-UA-Model | アクセス端末のモデル名 |
UAHint = Request.Headers["Sec-CH-UA"];
UAHintMobile = Request.Headers["Sec-CH-UA-Mobile"];
UAHintFullVersion = Request.Headers["Sec-CH-UA-Full-Version"];
UAHintPlatform = Request.Headers["Sec-CH-UA-Platform"];
UAHintPlatformVersion = Request.Headers["Sec-CH-UA-Platform-Version"];
UAHintArch = Request.Headers["Sec-CH-UA-Arch"];
UAHintBitness = Request.Headers["Sec-CH-UA-Bitness"];
UAHintModel = Request.Headers["Sec-CH-UA-Model"];
<p>User-Agent Client Hints : @Model.UAHint</p>
<p>UACHints Mobile : @Model.UAHintMobile</p>
<p>UACHints FullVersion : @Model.UAHintFullVersion</p>
<p>UACHints Platform : @Model.UAHintPlatform</p>
<p>UACHints PlatformVersion : @Model.UAHintPlatformVersion</p>
<p>UACHints Arch : @Model.UAHintArch</p>
<p>UACHints Bitness : @Model.UAHintBitness</p>
<p>UACHints Model : @Model.UAHintModel</p>
Accept-CH
を設定します。using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace UserAgentHint.Pages
{
public class IndexModel : PageModel
{
public string UAHint { get; set; }
public string UAHintMobile { get; set; }
public string UAHintFullVersion { get; set; }
public string UAHintPlatform { get; set; }
public string UAHintPlatformVersion { get; set; }
public string UAHintArch { get; set; }
public string UAHintBitness { get; set; }
public string UAHintModel { get; set; }
public void OnGet()
{
UAHint = Request.Headers["Sec-CH-UA"];
UAHintMobile = Request.Headers["Sec-CH-UA-Mobile"];
UAHintFullVersion = Request.Headers["Sec-CH-UA-Full-Version"];
UAHintPlatform = Request.Headers["Sec-CH-UA-Platform"];
UAHintPlatformVersion = Request.Headers["Sec-CH-UA-Platform-Version"];
UAHintArch = Request.Headers["Sec-CH-UA-Arch"];
UAHintBitness = Request.Headers["Sec-CH-UA-Bitness"];
UAHintModel = Request.Headers["Sec-CH-UA-Model"];
Response.Headers.Add("Accept-CH", "Sec-CH-UA-Full-Version,Sec-CH-UA-Platform-Version,Sec-CH-UA-Arch,Sec-CH-UA-Bitness,Sec-CH-UA-Model");
}
}
}
Accept-CH
ヘッダを設定し、取得したいUser-Agent Client Hintsの項目を値に設定します。複数の値を取得する場合は ,
で区切ります。 Response.Headers.Add("Accept-CH", "Sec-CH-UA-Full-Version,Sec-CH-UA-Platform-Version,Sec-CH-UA-Arch,Sec-CH-UA-Bitness,Sec-CH-UA-Model");
User-Agent Client Hints : "Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"
UACHints Mobile : ?0
UACHints FullVersion : "125.0.2535.51"
UACHints Platform : "Windows"
UACHints PlatformVersion : "15.0.0"
UACHints Arch : "x86"
UACHints Bitness : "64"
UACHints Model : ""
User-Agent Client Hints : "Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"
UACHints Mobile : ?0
UACHints FullVersion : "125.0.6422.60"
UACHints Platform : "Windows"
UACHints PlatformVersion : "15.0.0"
UACHints Arch : "x86"
UACHints Bitness : "64"
UACHints Model : ""
User-Agent Client Hints : "Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"
UACHints Mobile : ?0
UACHints FullVersion : "124.0.6367.209"
UACHints Platform : "macOS"
UACHints PlatformVersion : "14.2.1"
UACHints Arch : "x86"
UACHints Bitness : "64"
UACHints Model : ""
User-Agent Client Hints : "Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"
UACHints Mobile : ?1
UACHints FullVersion : "125.0.6422.60"
UACHints Platform : "Android"
UACHints PlatformVersion : "10.0.1"
UACHints Arch : ""
UACHints Bitness : ""
UACHints Model : "802SO"