将凭据添加到URL字符串的正确方式

本文关键字:方式 字符串 URL 添加 | 更新日期: 2023-09-27 17:57:30

简单的问题。我有一个URL,我需要添加用户名和密码来输入凭据。

我想知道C#中是否有一个方法可以接收URL字符串和凭据,并返回带有凭据的URL。我想用这个函数做我所做的事情,但这个函数读取特定的字符串,最终可能会导致错误:(它只是添加用户名和凭据)

url = url.Substring(0, url.IndexOf("/") + 2) + userName + ":" + password + "@" + url.Substring(url.IndexOf("/") + 2);

这种方式真的是静态的。。。我需要获得URL的最后一个字符串。

将凭据添加到URL字符串的正确方式

使用UriBuilder:

var uri = new Uri("http://www.example.org");
var uriWithCred = new UriBuilder(uri) { UserName = "u", Password = "p" }.Uri;

生成:

http://u:p@www.example.org/

感谢上面的答案,为了处理@、#、:等字符,您需要对用户和密码进行URL编码:

  public static string CreateProtectedURL(string url, string username, string password)
    {
       
        var uri_protected= (new UriBuilder( new Uri(url)) { UserName = HttpUtility.UrlEncode(username), Password = HttpUtility.UrlEncode(password) }.Uri);
        return uri_protected.AbsoluteUri.ToString(); //will work in browser
       // return HttpUtility.UrlDecode(uri_protected.AbsoluteUri); //will not work in browser, you will get the normal url with user and pass 
    }
相关文章: