2016-05-12 18 views
1

Passwort zu senden versuchen, xmlHttpRequest vom Frontend (Javascript) mit POST und anderen Parametern mit Namen wieUmgang mit Sonderzeichen in Parametern mit XMLHttpRequest

"&password=" document.getElementById('password').value 

ich HttpServletRequest.getparameter bin mit dem Parameter-String von Passwort zu erhalten wie string pswd = request.getparameter("password");

Der Code funktioniert mit allen Passwörtern fein, die Sonderzeichen außer Passwörter wie diese qwe100% qwe haben, qwe198% qwe wenn ich die Passwörter passieren, wenn ich zusammen auch mit Passwort gesendet Benutzernamen oder andere Parameter lesen Ergebnisse ich n exception [illegalArgumentException] Hilfe ist willkommen ..

Antwort

1

Sie müssen encodeURIComponent auf der JavaScript-Seite verwenden, bevor Sie es an das Back-End übergeben.

Das heißt:

var pass = encodeURIComponent(document.getElementById('password').value); 

Beachten Sie, dass auf der Seite Java, sollten Sie dann eine tun:

URLDecoder.decode (request.getParameter ("Passwort"));

EDIT

Als @BalusC Ich bin auf der Java-Seite falsch weist darauf hin - Sie bereits getan haben, was auf der Seite JavaScript benötigt wird, so dass Sie den Java-Teil nicht benötigen.

+1

JavaScript Teil ist korrekt. Java-Teil ist falsch. Das Servlet macht dies automatisch (die Ausnahme, der das OP gegenüber stand, ist dafür indikativ). Wenn Sie es immer noch explizit dekodieren, dann würden Sie es im Grunde doppelt dekodieren, was zu der gleichen Ausnahme führt. – BalusC

+0

Bearbeitet - Sie haben Recht - Danke, dass Sie darauf hingewiesen haben. Ich habe meinen eigenen Code durchgesehen und den URLDecoder auch nicht gemacht - ziemlich schlecht, wenn ich meinen eigenen Code nicht lesen kann. – stdunbar

Verwandte Themen