如何在 HTTP 代理的用户名/密码中使用特殊字符?

如何在 HTTP 代理的用户名/密码中使用特殊字符?

我正在尝试在 Windows 机器上设置 HTTP 代理。问题是,密码中有一个特殊字符 (@),导致命令set失败。

我尝试过转义该字符 ( \@) 并使用十六进制值对其进行百分比编码 ( %40),但都无济于事。

例如,使用用户名 Foo 和密码 B@r,我尝试了以下命令:

set http_proxy=http://foo:B\@[email protected]:80
set http_proxy=http://foo:B%[email protected]:80

除了更改密码之外,我怎样才能让代理使用密码?

答案1

你必须百分比编码|编码特殊字符。例如,不要这样:

http://foo:B@[email protected]:80

你这样写:

http://foo:B%[email protected]:80

因此@被替换为%40

注意:foo = 用户名,b@r = 密码,http-gateway.domain.org = 要连接的主机代理

答案2

对于用户名或密码中的任何特殊字符,我们总是可以使用 UTF-8 编码字符串代替。例如: ! 可以替换为 %21

因此,如果密码是 abc!,命令如下:

npm 配置设置代理http://用户:abc%[电子邮件保护]:8080/

npm 配置设置 https 代理http://用户:abc%[电子邮件保护]:8080/

答案3

使用十六进制表示法中特殊字符的 %Ascii 代码表示任何特殊字符。假设我的密码是AB@12#&那么密码应该设置为

git config --global http.proxy *http://usernamne:**AB%4012%23%26**@myipadress:portnumber*

请参阅 ascii 表以了解任何数字的十六进制 ascii 码。

答案4

根据这个答案所以,您可以尝试使用 ^ 来转义 @ 符号吗?

相关内容