負載均衡的場景下ASP.NET Core如何獲取客戶端IP地址


在ASP.NET中,使用負載均衡時,可以通過ServerVariables獲取客戶端的IP地址。

var ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"];

但在ASP.NET Core中沒有ServerVariables的對應實現,需要換一種方式,可以在HttpContext.Request.Headers中獲取,需要注意的是key與ServerVariables方式不一樣,ServerVariables中是"HTTP_X_FORWARDED_FOR",HttpContext.Request.Headers中是"X-Forwarded-For",示例代碼如下:

var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();

完整的擴展方法實現如下:

public static class HttpContextExtension
{
    public static string GetUserIp(this HttpContext context)
    {
        var ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
        if (string.IsNullOrEmpty(ip))
        {
            ip = context.Connection.RemoteIpAddress.ToString();
        }
        return ip;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM