gpt4 book ai didi

asp.net-mvc-3 - .NET MVC 路由与 Url 编码问题

转载 作者:行者123 更新时间:2023-12-02 02:19:10 28 4
gpt4 key购买 nike

我有以下路由代码:

routes.MapRoute(
"email-validated/{sessionId}",
"email-validated/{sessionId}",
new { controller = "User", action = "EmailValidated", sessionId = UrlParameter.Optional }
);

当我使用 url 编码的路由时,它不会匹配 %2f、%2b 和其他一些转义字符的路由。它也不会匹配非 url 编码(带 + 等的东西)例如

这有效:

email-validated/XQiKC6KMM%2cmko4nOvzGRwPu9oaZFoCtXsFFJg3ZTf9S5rsBbLGjnz3FN3SJ0apEZcqK1PIcCY28mRMykB39XnFLKaL7390CDfLZiV77cso

这不起作用(包含 %2f 等):

email-validated/XQiKC6KMM%2fmko4nOvzGRwPu9oaZFoCtXsFFJg3ZTf9S5rsBbLGjnz3FN3SJ0apEZcqK1PIcCY28mRMykB39XnFLKaL7390CDfLZiV77cso

这不起作用(包含+等)

email-validated/XQiKC6KMM+mko4nOvzGRwPu9oaZFoCtXsFFJg3ZTf9S5rsBbLGjnz3FN3SJ0apEZcqK1PIcCY28mRMykB39XnFLKaL7390CDfLZiV77cso

最佳答案

如果可以的话,您需要确保您的 sessionId URL 安全。 sessionId是Base64编码的,Base64中存在三个URL问题字符,“/”,“+”和“=”。创建链接时,使用以下内容对您的 sessionId 进行编码:

    public string ToUrlSafeBase64String(string Base64String)
{
// avoid any slashes, plus signs or equal signs
// the following makes this base64 string url safe
Base64String = Base64String.Replace("/", "_");
Base64String = Base64String.Replace("+", "-");
return Base64String.Replace("=", String.Empty);
}

然后,使用以下命令重新创建原始 Base64 编码字符串:

    public string FromUrlSafeBase64String(string Base64String)
{
// add back any slashes, plus signs or equal signs
// the following makes this url safe string a base64 string
Base64String = Base64String.Replace("_", "/");
Base64String = Base64String.Replace( "-", "+");
return Base64String.PadRight(Base64String.Length + (4 - Base64String.Length % 4) % 4, '=');
}

关于asp.net-mvc-3 - .NET MVC 路由与 Url 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7225563/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com