在 Service 層中可以透過注入 IHttpContextAccessor 服務來取得 IP:
如果有反向代理伺服器,很可能就無法取得到正確的 IP 位置,這時候就可以檢查 Header 中是否有包含 X-Forwarded-For 資訊,許多反向代理伺服器都會將使用者的 IP 儲存在這個位置提供給伺服器:
public class MyService(IHttpContextAccessor httpContextAccessor)
{
public void GetIp()
{
string? ip = httpContextAccessor.HttpContext?.Connection.RemoteIpAddress?.ToString();
}
}
如果有反向代理伺服器,很可能就無法取得到正確的 IP 位置,這時候就可以檢查 Header 中是否有包含 X-Forwarded-For 資訊,許多反向代理伺服器都會將使用者的 IP 儲存在這個位置提供給伺服器:
public class MyService(IHttpContextAccessor httpContextAccessor)
{
public void GetIp()
{
string? ip = httpContextAccessor.HttpContext?.Request.Headers["X-Forwarded-For"].FirstOrDefault();
if (string.IsNullOrWhiteSpace(ip))
ip = httpContextAccessor.HttpContext?.Connection.RemoteIpAddress?.ToString();
}
}
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com