Tumatanggap ang java.net.PasswordAuthentication ng username at array ng mga character ng password. Ipasa ang orihinal na mga character ng password:

var credential = new java.net.PasswordAuthentication(
    "proxy-user", "p@ssword".toCharArray());

Ang value ay isang halimbawang password. Sa code ng aplikasyon, kunin ang tunay na mga character mula sa inilaan na pinagmulan ng kredensyal.

Ang @ sa loob ng password na ito ay data, dahil may sariling argumento na ang password. Ang pagpapalit nito sa p%40ssword bago ang constructor ay nagbibigay ng ibang password.

Ang proxy URL ay may ibang representasyon ng kredensyal. Sa URL tulad ng http://proxy-user:p%[email protected]:8080, ang naka-encode na @ ay nasa loob ng impormasyon ng user, habang ang sumunod na @ ay naghihiwalay ng impormasyong iyon mula sa host. I-decode at i-encode ayon sa interface na aktwal na gumagamit ng value.

Ang quoting sa shell, escaping ng Java string literal at percent-encoding ng URL ay lumulutas din ng magkakaibang problema sa pag-parse. Tukuyin kung aling layer ang nagbabasa ng input sa halip na paulit-ulit na i-encode ang kredensyal hanggang magbago ang pag-uugali ng isang request.

Kaugnay na mga artikulo