如何在 ASP.NET / C# 中获取客户端设备信息?

2023-12-24

我正在尝试获取访问日志的客户端计算机信息。如何在 ASP.NET / C# 中获取客户端设备名称和 IP 地址?


您可以从以下位置获取直接客户端IPRequest.UserHostAddress财产:

public ActionResult Index()
{
    string ip = Request.UserHostAddress;
    ...
}

话虽如此,在很多情况下这可能还不够好。例如,假设您的 Web 服务器位于反向代理(例如 nginx 或 HAProxy)后面。在这种情况下UserHostAddress将始终返回该代理的 IP。如果您想在这种情况下获取原始客户端 IP 地址,您可以使用标准X-Forwarded-For https://en.wikipedia.org/wiki/X-Forwarded-For这些反向代理服务器可能设置的请求标头:

string ip = Request.Headers["X-Forwarded-For"];

另请注意,如果请求经过许多代理服务器,则X-Forwarded-Forheader 将表示每个代理服务器的 IP 地址的逗号分隔列表:

X-Forwarded-For: client, proxy1, proxy2

您可能需要考虑这种情况,如果您想获取最接近或等于客户端的 IP 地址,那么您应该从此列表中提取最左边的地址。

就“客户端设备名称”而言,TCP/HTTP 协议中没有内置这样的概念,因此如果您希望能够在服务器上检索它,您的客户端可能需要使用一些自定义标头或参数来提供它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET / C# 中获取客户端设备信息? 的相关文章

随机推荐