Jak używać znaków specjalnych w nazwie użytkownika / haśle dla proxy HTTP?

26

Próbuję skonfigurować serwer proxy HTTP na komputerze z systemem Windows. Problem polega na tym, że hasło ma znak specjalny (@), który powoduje setniepowodzenie polecenia.

Próbowałem uciec zarówno przed znakiem ( \@), jak i kodowaniem procentowym za pomocą wartości szesnastkowej ( %40), ale bezskutecznie.

Na przykład, podając nazwę użytkownika Foo i hasło B @ r, wypróbowałem następujące polecenia:

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

Oprócz zmiany hasła, w jaki sposób serwer proxy może używać hasła?

piropingwin
źródło
Czy zestaw nie działa, czy narzędzie wykorzystujące zmienną środowiskową http_proxy nie działa z powodu symbolu @?
Mike Cornell,
Tak. Ponieważ format to nazwa użytkownika: hasło @ serwer: port, posiadanie @ w środku hasła powoduje, że prawa strona hasła jest uważana za nazwę hosta, dlatego powyższe rozpoznawanie nazwy hosta kończy się niepowodzeniem, ponieważ uważa ona, że ​​nazwa hosta to r @ http- gateway.domain.org. „R @” nie powinno tam być.
Philluminati,
2
Próbowałem użyć% 40 i zadziałało (w systemie Windows), jesteś pewien?
thegreendroid
W rzeczywistości działa zarówno w systemie Windows, jak i Linux (Ubuntu).
thegreendroid

Odpowiedzi:

29

Musisz kodować procentowo | zakodować znaki specjalne. Np. Zamiast tego:

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

piszesz to:

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

Więc @zostaje zastąpiony przez %40.

ravi parekh
źródło
2
kodowanie jest rzeczywiście sposobem na obejście tego problemu (i wielu innych).
HTDutchy
stwierdziłem, że muszę podwoić
kod
1
Sugeruję po prostu użyć encodeURIComponent()do tego celu javascript . Możesz łatwo korzystać z przeglądarki DeveloperTools -> Console.
Mir-Ismaili
2

Dla każdego znaku specjalnego użyj kodu% Ascii znaku specjalnego w notacji szesnastkowej. Załóżmy, że moje hasło to AB @ 12 #, a następnie hasło należy ustawić jako

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

Zapoznaj się z tabelą ascii, aby poznać szesnastkowy kod ascii dowolnej liczby.

Sandeep Kumar
źródło
-1

Czy na podstawie tej odpowiedzi dotyczącej SO możesz spróbować użyć ^, aby uciec od symbolu @?

Mike Cornell
źródło
W odpowiedzi na oba, zestaw jest udany, jest to narzędzie wykorzystujące zmienną środowiskową: set http_proxy=http://foo:B^@[email protected]:80 jruby -S gem install rakeBŁĄD: Podczas wykonywania gem ... (URI :: InvalidURIError) schemat http nie akceptuje części rejestru: foo: B @ r @ http- gateway.domain.org:80 (lub zła
nazwa
To jest pytanie oparte na Linuksie, a nie pytanie oparte na Windowsie, użycie ^ nie działa dla mnie. Nadal dostaję wget: unable to resolve host address tf4ce @ server.company.com '' po ustawieniu zmiennej środowiskowej proxy.
Philluminati,
2
W rzeczywistości jest to pytanie oparte na systemie Windows ... Znam piropingyna osobiście.
Mike Cornell,