Como usar caracteres especiais no nome de usuário / senha para o proxy HTTP?


26

Estou tentando configurar um proxy HTTP em uma máquina Windows. O problema é que a senha possui um caractere especial (@) que está causando setfalha no comando.

Eu tentei escapar do caractere ( \@) e codificá-lo por cento com o valor hexadecimal ( %40), sem sucesso.

Por exemplo, com o nome de usuário Foo e a senha B @ r, tentei os seguintes comandos:

set http_proxy=http://foo:B\@r@http-gateway.domain.org:80
set http_proxy=http://foo:B%40r@http-gateway.domain.org:80

Além de alterar a senha, como posso fazer com que o proxy use a senha?


O conjunto está falhando ou a ferramenta que está usando a variável de ambiente http_proxy está falhando devido ao símbolo @?
Mike Cornell

Sim. Como o formato é nome de usuário: senha @ servidor: porta, ter @ no meio da sua senha faz com que o lado direito da sua senha seja considerado o nome do host, portanto, a resolução do nome do host acima falha porque acha que o nome do host é r @ http- gateway.domain.org. O "r @" não deve estar lá.
Philluminati

2
Eu tentei usar% 40 e funcionou (no Windows), você tem certeza?
precisa

De fato, ele funciona tanto no Windows quanto no Linux (Ubuntu).
thegreendroid

Respostas:


29

Você precisa codificar por cento | codifique os caracteres especiais. Por exemplo, em vez disso:

http://foo:B@r@http-gateway.domain.org:80

você escreve isto:

http://foo:B%40r@http-gateway.domain.org:80

Então @é substituído por %40.


2
codificação é realmente a maneira de contornar esse problema (e muitos outros).
precisa saber é o seguinte

Achei que eu precisava dupla urlencode alguns personagens
dovidweisz

1
Sugiro simplesmente o uso de javascript encodeURIComponent()para esse fim. Você pode usar facilmente o seu navegador DeveloperTools -> Console.
Mir-Ismaili

2

Use o código% Ascii do caractere especial na notação hexadecimal para qualquer caractere especial. Suponha que minha senha seja AB @ 12 # e, em seguida, a senha deve ser definida como

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

Consulte a tabela ascii para saber o código hexadecimal ascii de qualquer número.



-1

Com base nesta resposta no SO , você pode tentar usar ^ para escapar do símbolo @?


Em resposta a ambos, o conjunto é bem-sucedido, é a ferramenta que utiliza a variável de ambiente: set http_proxy=http://foo:B^@r@http-gateway.domain.org:80 jruby -S gem install rakeERRO: Ao executar o gem ... (URI :: InvalidURIError), o esquema http não aceita a parte do registro: foo: B @ r @ http- gateway.domain.org:80 (ou mau hostname?)
pyropenguin

Esta é uma pergunta baseada no Linux, não no Windows, usando ^ não funciona para mim. Ainda recebo wget: unable to resolve host address tf4ce @ server.company.com '' depois de definir a variável de ambiente proxy.
Philluminati 3/11

2
Na verdade, é uma pergunta baseada no Windows ... Eu sei o pyropenguin pessoalmente.
Mike Cornell
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.