C# HttpContext.Current.Request.ServerVariables[";HTTP\u REFERER";]null
我正在尝试使用以下代码在global.asax session_start中获取引用url:C# HttpContext.Current.Request.ServerVariables[";HTTP\u REFERER";]null,c#,asp.net,C#,Asp.net,我正在尝试使用以下代码在global.asax session_start中获取引用url: HttpContext.Current.Request.ServerVariables["HTTP_REFERER"] 我尝试使用Request.urlreferer.AbsoluteUri,但urlreferer也为空 但是我正在变空。你能告诉我什么是错误的或替代方案吗?不是所有的用户代理都会发送推荐人,一些代理/中介会删除推荐人,而且通常情况下,没有推荐人 只需在某个时刻检查Request.url
HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]
我尝试使用Request.urlreferer.AbsoluteUri,但urlreferer
也为空
但是我正在变空。你能告诉我什么是错误的或替代方案吗?不是所有的用户代理都会发送推荐人,一些代理/中介会删除推荐人,而且通常情况下,没有推荐人
只需在某个时刻检查Request.urlReferer==null
;如果是,不要尝试查看Request.urlReferer.AbsoluteUri
这里没有什么“错误”,你也无能为力。如果你不知道他们从哪里来,你就只能忍受了。我知道这个答案晚了大约2年半,但我找不到关于
urlreferer
属性的详细说明,所以我想在这里添加这些信息@MarcGravel的答案在很大程度上是正确的,但它忽略了另一种可能性。HTTP头中指定的referer值也可能是无效的uri
因此,在使用HttpRequest
上的urlreferer
属性时应小心。如果查看在使用类似ILSpy的东西调用urlReferer
时执行的代码,您将看到它试图解析来自请求头的值。如果该标头中的值不是有效的uri,您将得到一个System.UriFormatException
这意味着,在尝试访问绝对uri
之前,只需检查urlreferer
是否为null,就可以在referer不是有效uri的情况下留下未处理的异常。如果您想要一个有效的Uri
或null
,则必须使用Request.ServerVariables[“HTTP\u REFERER”]
,然后使用Uri.TryParse
,或者必须包装请求。urireferer==null
签入try catch
我制作了一个快速演示来展示urlreferer
属性的行为。以下页为例:
<%@ Page Language="C#" AutoEventWireup="true" %>
<html><body>
<table border="1">
<tr><td>Referrer</td><td><%= GetUrlReferrer() %></td></tr>
</table>
</body></html>
<script runat="server">
public string GetUrlReferrer()
{
try
{
return Request.UrlReferrer == null ? "(None)" : Request.UrlReferrer.ToString();
}
catch (Exception ex)
{
return Request.ServerVariables["HTTP_REFERER"] + " (from Server Variable)";
}
}
</script>
如果您单步查看代码,您将看到对
Request.urlReferer
的调用引发异常,而那http://www%2etest%2e.com/test.html
通过访问ServerVariable
返回。我想您可以使用Request.UrlReferrer
来进行此操作。没有理由否决合法问题的投票。在这里所做的事情可能看起来很愚蠢,但这并没有使这个问题变得不正确。
> $client = new-object System.Net.WebClient
> $client.Headers.Add("Referer", "http://www%2etest%2e.com/test.html")
> $client.DownloadString("http://localhost/urlreferrertest.aspx")