Chu*_*utt 98 c# asp.net http-referer http http-headers
我在寻找获得浏览器的快捷,方便和可靠的方式HTTP推荐在ASP.Net(C# ).我知道HTTP推荐本身是不可靠的,但我确实希望得到引荐,如果它的可靠方法是存在.
Dar*_*rov 162
您可以使用当前请求的UrlReferrer属性:
Request.UrlReferrer
Run Code Online (Sandbox Code Playgroud)
这将从请求中读取Referer HTTP头,该头可能由客户端(用户代理)提供,也可能不提供.
Dis*_*ile 19
使用该Request.UrlReferrer
属性.
在幕后它只是检查ServerVariables("HTTP_REFERER")
财产.
Nig*_*888 16
Request.Headers["Referer"]
Run Code Online (Sandbox Code Playgroud)
如果引用HTTP标头格式错误(这可能发生,因为它通常不在您的控制之下),Request.UrlReferer
将抛出一个System.UriFormatException
.
至于使用Request.ServerVariables
,按MSDN:
Request.ServerVariables集合
ServerVariables集合检索预定环境变量的值并请求标头信息.
Request.Headers Property
获取HTTP标头的集合.
Request.Headers
是一个更好的选择Request.ServerVariables
,因为Request.ServerVariables
包含所有环境变量以及标题,其中Request.Headers
是一个只包含标题的更短的列表.
所以最好的解决方案是使用Request.Headers
集合直接读取值.如果要在表单上显示该值,请注意Microsoft关于HTML编码值的警告.
Tom*_*Tom 13
Uri myReferrer = Request.UrlReferrer;
string actual = myReferrer.ToString();
Run Code Online (Sandbox Code Playgroud)
由于Google在搜索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;
}
Run Code Online (Sandbox Code Playgroud)
然后您的客户需要设置Referrer Header
为API Request
:
// Microsoft.AspNet.WebApi.Client
client.DefaultRequestHeaders.Referrer = new Uri(url);
Run Code Online (Sandbox Code Playgroud)
现在,Web API Request
包含您可以从以下方式访问的引荐来源数据Web API
:
Request.UrlReferrer();
Run Code Online (Sandbox Code Playgroud)
我正在使用.Net Core 2 mvc,这个适用于我(获取预览页面):
HttpContext.Request.Headers["Referer"];
Run Code Online (Sandbox Code Playgroud)