【问题标题】:How do I get the referrer URL in an ASP.NET MVC action?如何在 ASP.NET MVC 操作中获取引荐来源网址?
【发布时间】:2010-12-01 01:37:47
【问题描述】:

如何在 ASP.NET MVC 操作中获取引荐来源网址?我正在尝试在您调用操作之前重定向回页面。

【问题讨论】:

  • 请记住,并非所有用户代理(AKA 浏览器)都会发送引荐来源网址信息,有些甚至可能伪造。

标签: asp.net-mvc redirect referrer


【解决方案1】:

如果您不喜欢直接访问Request.ServerVariables 字典,也可以使用Request.UrlReferrer 来获取引用URL。

【讨论】:

  • 这正是我所需要的。谢谢你,兄弟!
  • Request.UrlReferrer 实际上是 URI,但您可以从那里获得有关引荐来源网址的所有信息。 (有关 URI 与 URL 的更多信息:stackoverflow.com/questions/176264/…)。
【解决方案2】:
Request.ServerVariables["http_referer"]

应该这样做。

【讨论】:

    【解决方案3】:

    你可以用这个

    filterContext.RequestContext.HttpContext.Request.UrlReferrer.AbsolutePath
    

    【讨论】:

    • 这可以在过滤器上下文中工作,但不能在问题所要求的操作上下文中工作。
    【解决方案4】:

    你可以将referrer url传递给viewModel,在我看来这比通过状态分享更好,试试吧:

    public interface IReferrer
    {
        String Referrer { get; set; }
    }
    

    ...

    public static MvcHtmlString HiddenForReferrer<TModel>(this HtmlHelper<TModel> htmlHelper) where TModel : IReferrer
    {
        var str = htmlHelper.HiddenFor(hh => hh.Referrer);
        var referrer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri;
        return new MvcHtmlString(str.ToHtmlString().Replace("value=\"\"", String.Format("value=\"{0}\"", referrer)));
    }
    

    ...

    @Html.HiddenForReferrer()
    

    【讨论】:

    • 呵呵,从来没有意识到下划线本身就是一个有效的变量名。怎么样。
    • @BVernon 真正的问题是为什么有人会那样使用它。我所知道的唯一一个使用单个下划线作为名称的约定是表示它只是您不想要或不需要的变量的占位符。
    • @Daniel 我同意,已修复
    猜你喜欢
    • 2011-05-14
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多