【问题标题】:My ReturnUrl is duplicating我的 ReturnUrl 重复
【发布时间】:2013-07-07 14:36:05
【问题描述】:

我有一个页面,如果您没有我想要的 cookie,它会将您重定向到创建 cookie 的页面。基本上,如果您没有告诉我您已经足够大,您必须重定向到一个页面并告诉我您的年龄。长话短说,如果我被重定向到我询问您年龄的页面,并且最终用户不决定给我年龄并单击同一页面或其他页面。我的代码正在添加到现有字符串中。

protected void Page_Load(object sender, EventArgs e)
    {       
        string referrer = Request.UrlReferrer.ToString();

            if (Request.Cookies["Age"] == null)
                Response.Redirect("/AgeRestricted/?ReturnUrl=" + referrer);


    }

如果我多次调用这个页面来加载我的 URLS 会变得非常难看。

http://localhost:14028/AgeRestricted/?ReturnUrl=http://localhost:14028/AgeRestricted/?ReturnUrl=http://localhost:14028/

它就像是连接到现有的。有什么办法可以防止这种情况发生吗?

我基本上想要它,这样我的 ReturnUrl QueryString 中只有 1 个参数,这样如果它已经有值就不会重复。

【问题讨论】:

  • 你不能只检查该部分是否已经在 url 中吗?

标签: c# asp.net url redirect


【解决方案1】:

您可以通过使用Uri 类来仅获取引荐来源网址的部分而无需查询字符串。例如:

if (Request.Cookies["Age"] == null)
{
    string referrer = Request.UrlReferrer.GetLeftPart(UriPartial.Path);
    Response.Redirect(referrer);
}

有关GetLeftPath的更多信息,请参阅:http://msdn.microsoft.com/en-us/library/system.uri.getleftpart.aspx

【讨论】:

  • 经过一些测试,我真的认为这是正确的。这是在重定向之前抓取 URL。因此,如果我在主页上,并且单击了有年龄限制的页面。发生重定向,这会获取主页的 url。不是导致重定向的年龄限制页面。
【解决方案2】:

这是解决问题的代码。不知道为什么我的最后一个答案被删除了。

 string url = HttpContext.Current.Request.Url.AbsoluteUri;

            if (Request.Cookies["Age"] == null)
                Response.Redirect("/AgeRestricted/?ReturnUrl=" + url);

【讨论】:

    猜你喜欢
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多