我的ReturnUrl正在复制

本文关键字:复制 ReturnUrl 我的 | 更新日期: 2023-09-27 18:21:39

我有一个页面,如果你没有我想要的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/

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

我基本上想拥有它,这样我的ReturnUrlQueryString中就只有一个参数,如果已经有值的话,它就不会重复。

我的ReturnUrl正在复制

您可以通过使用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

以下是修复该问题的代码。不知道为什么我的最后一个答案被删除了。

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