Tanda @ dalam Kata Sandi Proxy Java
Teruskan kata sandi mentah ke PasswordAuthentication dan terapkan pengodean URL hanya saat membangun URL proxy yang sebenarnya.
java.net.PasswordAuthentication menerima nama pengguna dan larik karakter kata sandi. Teruskan karakter kata sandi asli:
var credential = new java.net.PasswordAuthentication(
"proxy-user", "p@ssword".toCharArray());
Nilai tersebut adalah kata sandi ilustratif. Dalam kode aplikasi, dapatkan karakter sebenarnya dari sumber kredensial yang dimaksud.
Tanda @ di dalam kata sandi ini adalah data, karena kata sandi sudah memiliki argumennya sendiri. Mengubahnya menjadi p%40ssword sebelum konstruktor memberikan kata sandi yang berbeda.
URL proxy memiliki representasi kredensial lain. Dalam URL seperti http://proxy-user:p%[email protected]:8080, @ yang dikodekan berada di dalam informasi pengguna, sedangkan @ berikutnya memisahkan informasi itu dari host. Dekodekan dan enkodekan sesuai antarmuka yang benar-benar mengonsumsi nilai tersebut.
Kutipan shell, escape literal string Java, dan pengodean persen URL juga menyelesaikan masalah penguraian yang berbeda. Tentukan lapisan mana yang membaca masukan alih-alih berulang kali mengodekan kredensial sampai perilaku permintaan berubah.