首页 > 其他分享 >WebAPI请求获取请求中的真实地址

WebAPI请求获取请求中的真实地址

时间:2023-07-20 09:00:12浏览次数:33  
标签:WebAPI 请求 req Headers 地址 IsNullOrWhiteSpace IsNullOrEmpty ipAddress string

public static string WebAPIGetRealIP(this HttpRequest req)
{
string ipAddress = req.Headers["x-forwarded-for"].ToString()?.Trim();
if (!string.IsNullOrEmpty(ipAddress) && ipAddress.IndexOf(",") != -1)
{
ipAddress = ipAddress.Split(",")[0];
}
if (string.IsNullOrEmpty(ipAddress) || string.IsNullOrWhiteSpace(ipAddress))
{
ipAddress = req.Headers["Proxy-Client-IP"];
}
if (string.IsNullOrEmpty(ipAddress) || string.IsNullOrWhiteSpace(ipAddress))
{
ipAddress = req.Headers["WL-Proxy-Client-IP"];
}
if (string.IsNullOrEmpty(ipAddress) || string.IsNullOrWhiteSpace(ipAddress))
{
ipAddress = req.Headers["HTTP_CLIENT_IP"];
}
if (string.IsNullOrEmpty(ipAddress) || string.IsNullOrWhiteSpace(ipAddress))
{
ipAddress = req.Headers["HTTP_X_FORWARDED_FOR"];
}
if (string.IsNullOrEmpty(ipAddress) || string.IsNullOrWhiteSpace(ipAddress))
{
ipAddress = req.Headers["X-Real-IP"];
}
if (string.IsNullOrEmpty(ipAddress) || string.IsNullOrWhiteSpace(ipAddress))
{
ipAddress = req.HttpContext.Connection.RemoteIpAddress?.MapToIPv4().ToString();
}
if (ipAddress == "::1")
{
ipAddress = "127.0.0.1";
}
if (string.Equals(ipAddress, "127.0.0.1") && req.Headers.ContainsKey("X-Forwarded-For"))
{
ipAddress = req.Headers["X-Forwarded-For"].ToString();
if (ipAddress.IndexOf(",") != -1)
{
ipAddress = ipAddress.Split(",")[0];
}
}
if (string.IsNullOrEmpty(ipAddress) || string.IsNullOrWhiteSpace(ipAddress))
{
return string.Empty;
}
return ipAddress;
}

标签:WebAPI,请求,req,Headers,地址,IsNullOrWhiteSpace,IsNullOrEmpty,ipAddress,string
From: https://www.cnblogs.com/lanyue-ik/p/17567346.html

相关文章

  • C# 后端请求 PostAsync GetStringAsync
     stringsendUrl=$"http://10.172.1.20/wtoptst/ws/r/awsp920";HttpClientsendclient=newHttpClient();stringtestStr=JsonConvert.SerializeObject(reques);//查看内容(测试用)HttpConten......
  • HJ33 整数与IP地址间的转换
    1.题目读题HJ33 整数与IP地址间的转换  考查点 2.解法思路 二进制与十进制的互转可参照  Java中十进制二进制相互转换的方法代码逻辑 具体实现 publicclassIP2Num{publicstaticvoidmain(String[]args){Scannersc=newScanner(S......
  • 使用@WebMvcTest--使用MockMvc框架来模拟HTTP请求进行测试--实现对单个控制器的http模
    1.优点无需启动内置服务器就可以对Controller中某一个HTTP接口进行测试,减少电脑内存占用和运行springboot时间消耗2.控制器类简单的方法packagecom.xurong.chapter4_test.controller;importcom.xurong.chapter4_test.Entity.Book;importcom.xurong.chapter4_test.reposit......
  • HTTP请求返回304状态码以及研究nginx中的304
    文章目录1.引出问题2.分析问题3.解决问题4.研究nginx中的3044.1启动服务4.2ETag说明4.3响应头Cache-Control 1.引出问题之前在调试接口时,代码总出现304问题,如下所示:2.分析问题HTTP304:NotModified是什么意思?标准解释是:NotModified客户端有缓......
  • element-ui pagination分页组件 点击一次页面跳转触发两次current-change请求
    在项目中使用element编写前端页面时,发现在使用pagination分页组件的时候,出现一个坑。情况是每一次点击页面切换,都会重复触发两次页面切换current-change事件。无论是点击后面的页码或者是下一页或者是跳转到某个页面都会触发两次。第一次正常触发,第二次触发后会返回首页。经过多......
  • PHP 优雅的发起 http 请求
    <?phpfunctionsendPostRequest($url,$data){//初始化cURL$curl=curl_init();//设置cURL选项curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_POST,true);curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($......
  • Download SQL Server Express或LocalDB下载地址
    Introducing http://downloadsqlserverexpress.com (thisshortlinkgoesdirectlytothispost)SQLServer2019ExpressEdition(English):Basic(239MB): https://download.microsoft.com/download/7/c/1/7c14e92e-bdcb-4f89-b7cf-93543e7112d1/SQLEXPR_x64_ENU.exe......
  • 第5章 IP地址管理和DHCP故障转移
    第5章IP地址管理和DHCP故障转移5.1IPAMIP地址管理(IPAddressManagement,IPAM)并不仅仅是一个规定如何管理IP地址的新的时髦词汇;它实际上是Windows2012R2的一个非常酷的新功能,该功能与已有的企业DNS和DHCP部署集成之后,将简化网络的复杂度。5.1.2IPAM的组件IPAM由三......
  • Linux配置IP地址
    目录修改配置文件重启网络服务相关命令查看路由状态route-n查看IP地址ipa查看网卡参数ethtoolens33查看DNS解析nslookup修改配置文件vi/etc/sysconfig/network-scripts/ifcfg-ens33配置解释TYPE=Ethernet#网卡类型是以太网PROXY_METHOD=noneBROWSER_ONLY=noBOO......
  • DHCP-全局地址池
    DHCP-全局地址池<Huawei>sysEntersystemview,returnuserviewwithCtrl+Z.[Huawei]uninenInfo:Informationcenterisdisabled.#开启dhcp功能[Huawei]dhcpenableInfo:Theoperationmaytakeafewseconds.Pleasewaitforamoment.done.[Huawei]ippool1......