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\@r@http-gateway.domain.org:80
set http_proxy=http://foo:B%40r@http-gateway.domain.org:80

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


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@r@http-gateway.domain.org:80

piszesz to:

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

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


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.



-1

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


W odpowiedzi na oba, zestaw jest udany, jest to narzędzie wykorzystujące zmienną środowiskową: set http_proxy=http://foo:B^@r@http-gateway.domain.org: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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.