Url Referrer在WebApi 2 MVC项目中不可用
本文关键字:项目 MVC Referrer WebApi Url | 更新日期: 2023-09-27 17:57:36
我有一个带有Controllers
控制器的MVC WebAPI 2项目。我尝试调用的方法是POST
(Create)。我还需要访问调用该方法的引用URL,无论我访问什么对象,引用URL要么不存在于对象中,要么为null。
例如,我添加了HTTPContext
引用,并且以下返回null
:
var thingythingthing = HttpContext.Current.Request.UrlReferrer;
Request
对象没有UrlReferrer
属性。
这也返回null:
HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]
我不能修改头,因为我需要能够生成到方法的链接,并根据调用的来源过滤访问。
我应该去的任何特定地方,或者,这些返回为空的任何特定原因?
编辑:我有一个GET方法(HttpContext.Current.Request.RequestContext.HttpContext.Request.UrlReferrer
)的解决方案,但没有POST方法。
看看这个答案。基本上,WebAPI请求使用不同类型的请求对象。不过,您可以创建一个扩展方法,为您提供UrlReferrer
。从链接的答案来看:
首先,您可以扩展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();