透過 `Request.ServerVariables` 與 `Request.Browser` 可獲取豐富的客戶端環境資訊。
NameValueCollection coll = Request.ServerVariables;
foreach (string key in coll.AllKeys)
{
Response.Write($"Key: {key}<br/>");
foreach (string val in coll.GetValues(key))
Response.Write($"Value: {val}<br/>");
}
public string GetClientIp()
{
// 代理伺服器會加上 X-Forwarded-For
if (Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
return Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
// 直接連線
return Request.ServerVariables["REMOTE_ADDR"];
}
註:`HTTP_VIA` 非標準,不建議依賴判斷是否經代理。
HttpBrowserCapabilities bc = Request.Browser;
string info = $"瀏覽器: {bc.Browser} {bc.Version}<br/>" +
$"平台: {bc.Platform}<br/>" +
$"是否行動裝置: {bc.IsMobileDevice}<br/>" +
$"支援 JavaScript: {bc.EcmaScriptVersion}<br/>";
Response.Write(info);
| 變數 | 含義 |
|---|---|
| REMOTE_ADDR | 客戶端 IP(或代理 IP) |
| HTTP_X_FORWARDED_FOR | 原始客戶端 IP 鏈(代理添加) |
| HTTP_USER_AGENT | 瀏覽器完整 User-Agent 字串 |
| HTTP_REFERER | 來源頁面 URL |
| SERVER_NAME | 伺服器主機名 |
| SERVER_PORT | 伺服器埠號 |
| REQUEST_METHOD | GET/POST 等 |
| QUERY_STRING | 查詢字串 |
| PATH_INFO | 請求路徑 |