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方法。

Url Referrer在WebApi 2 MVC项目中不可用

看看这个答案。基本上,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();