在我的应用程序中,我希望从ASP.NET WEB API中读取客户端请求的URL。
示例:
https://xxx.test.com/test.html页面正在调用https://api.test.com/api/home/get/1 WEB方法。
请求的网址https://xxx.test.com/test.html需要从网络方法中读取。
以下代码返回IP地址。它不会返回域名网址。
// GET api/home/get/5
public string Get(int id)
{
return HttpContext.Current.Request.UserHostAddress;
}
请建议我。
先谢谢。
答案 0 :(得分:1)
试试这个:
string url = HttpContext.Current.Request.Url.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx
string path = HttpContext.Current.Request.Url.AbsolutePath;
// /TESTERS/Default6.aspx
string host = HttpContext.Current.Request.Url.Host;
// localhost
答案 1 :(得分:1)
请HttpContext.Current.Request.UrlReferrer.OriginalString
。请注意,此数据是由客户设置的,因此您不能相信它是100%准确的。
答案 2 :(得分:0)
如果您在负载均衡器或其他反向代理之后,在询问HttpContext.Current.Request.UserHostAddress
时,您将无法获得客户端的IP,而是获得负载均衡器的IP。在这种情况下,请查看HttpContext.Current.Request.Headers["X-Forwarded-For"]
以获取浏览器的IP地址。请注意,如果您不在这些硬件之后,这是一个很好的攻击载体。
答案 3 :(得分:0)
您可以尝试HttpRequest.UrlReferrer
。可以找到MSDN参考here