代码之家  ›  专栏  ›  技术社区  ›  Chuck Le Butt

在ASP.NET中获取HTTP引用

  •  94
  • Chuck Le Butt  · 技术社区  · 14 年前

    我正在寻找一种快速、简单、可靠的方法来获取浏览器的 HTTP引用程序 在里面 ASP.Net ( C类# ). 我知道httpreferer本身是不可靠的,但是我确实想要一种可靠的方法来获取referer 现在。

    9 回复  |  直到 11 年前
        1
  •  162
  •   Darin Dimitrov    14 年前

    你可以用 UrlReferrer 当前请求的属性:

    Request.UrlReferrer
    

    这将读取 Referer 来自请求的HTTP头,该请求可能由客户端(用户代理)提供,也可能不由客户端(用户代理)提供。

        2
  •  19
  •   Ohad Schneider    7 年前

    使用 Request.UrlReferrer 财产。

    在场景下面它只是检查 ServerVariables("HTTP_REFERER") 财产。

        3
  •  16
  •   NightOwl888 Jabrwoky    7 年前
    Request.Headers["Referer"]
    

    解释

    这个 Request.UrlReferer 会抛出一个 System.UriFormatException 如果referer HTTP头的格式不正确(这可能会发生,因为它通常不在您的控制之下)。

    至于使用 Request.ServerVariables ,根据MSDN:

    Request.ServerVariables集合

    ServerVariables集合检索预定环境变量的值和请求头信息。

    请求.头属性

    获取HTTP头的集合。

    Request.Headers 是一个比 请求服务器变量 ,自 请求服务器变量 包含所有环境变量以及头,其中 请求头 是一个很短的列表,只包含标题。

    所以最好的解决方案是使用 请求头 集合直接读取值。不过,如果要在表单上显示该值,请务必注意Microsoft关于HTML编码该值的警告。

        4
  •  13
  •   AminM LordDoskias    10 年前

    这样地: HttpRequest.UrlReferrer Property

    Uri myReferrer = Request.UrlReferrer;
    string actual = myReferrer.ToString();
    
        5
  •  9
  •   Serj Sagan    9 年前

    因为谷歌会在你搜索 C# Web API Referrer 这是交易: Web API 使用不同类型的 Request 从正常 MVC Request 打电话 HttpRequestMessage 不包括 UrlReferrer . 从一个正常人 Web API 请求不包含此信息,如果您真的需要它,您必须让您的客户特意包含它。尽管你可以让这成为你 API Object ,更好的方法是 Headers .

    首先,你可以扩展 HttpRequestMessage 提供 UrlReferrer() 方法:

    public static string UrlReferrer(this HttpRequestMessage request)
    {
        return request.Headers.Referrer == null ? "unknown" : request.Headers.Referrer.AbsoluteUri;
    }
    

    那么你的客户需要设置 Referrer Header 给他们的 API Request :

    // Microsoft.AspNet.WebApi.Client
    client.DefaultRequestHeaders.Referrer = new Uri(url);
    

    而现在 Web API Request 包括您可以从 Web API :

    Request.UrlReferrer();
    
        6
  •  8
  •   Saad Hasan    7 年前

    我正在使用.Net Core 2 mvc, 这一个对我有用(获得预览页面):

    HttpContext.Request.Headers["Referer"];
    
        7
  •  1
  •   Donat Sasin    8 年前
    string referrer = HttpContext.Current.Request.UrlReferrer.ToString();
    
        8
  •  1
  •   Vladi    7 年前

    有时你必须把所有的链接

    System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
    

    (当“当前”未建立时,在选项中)

        9
  •  0
  •   Bengi Besçeli    6 年前

    属于其他回复,我添加了获取空值的条件子句。

    string ComingUrl = "";
    if (Request.UrlReferrer != null)
    {
        ComingUrl = System.Web.HttpContext.Current.Request.UrlReferrer.ToString();
    }
    else
    {
        ComingUrl = "Direct"; // Your code
    }