@ w haśle proxy Java
Przekaż surowe hasło do PasswordAuthentication i stosuj kodowanie URL tylko podczas budowania rzeczywistego adresu URL proxy.
java.net.PasswordAuthentication przyjmuje nazwę użytkownika i tablicę znaków hasła. Przekaż oryginalne znaki hasła:
var credential = new java.net.PasswordAuthentication(
"proxy-user", "p@ssword".toCharArray());
Wartość jest przykładowym hasłem. W kodzie aplikacji pobierz rzeczywiste znaki z zamierzonego źródła poświadczeń.
Znak @ wewnątrz tego hasła jest daną, ponieważ hasło ma już własny argument. Przekształcenie go w p%40ssword przed konstruktorem przekazuje inne hasło.
Adres URL proxy ma inną reprezentację poświadczeń. W adresie takim jak http://proxy-user:p%[email protected]:8080 zakodowany @ należy do informacji o użytkowniku, a późniejszy @ oddziela te informacje od hosta. Dekoduj i koduj zgodnie z interfejsem, który faktycznie zużywa wartość.
Cytowanie w powłoce, escapowanie literałów łańcuchowych Java i procentowe kodowanie URL również rozwiązują różne problemy analizy składniowej. Ustal, która warstwa czyta dane wejściowe, zamiast wielokrotnie kodować poświadczenia, aż zmieni się zachowanie żądania.