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

标签 asp.net-mvc-3 routes url-encoding

我有以下路由代码:

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/

相关文章:

html - 表单被随机提交为 GET 而不是 POST

图像处理批处理工具,用于使用 YCbCr=4 :4:4 对图像进行重采样

jquery - 将主干集合/javascript 对象与来自服务器的新模型相结合

angularjs - Angular 路线提供者

Node.js 路由无法识别正确的 JSON

ios - 日期时间的 AFNetworking URL 参数编码 + 和 : sign

Python 请求奇怪的 URL %-编码

asp.net - asp.net mvc 页面上输出奇怪的字符

javascript - Angular RouteParams 发送 ID

ios 网址(字符串 : ) not working always