2013-02-21 2 views
1

Если я вход passsword в Admin$&%^ или Admin$&^% тогда моем Аяксе вызова работает, но если я его вход, как этот Admin$!% или Admin$!%^. вызов Ajax бросками следующее исключение .....Почему% не допускаются

Пожалуйста, помогите, как им не удалось получить основную причину этой проблемы

INFO: Character decoding failed. Parameter [txt_password] with value [Admin$!%] has been ignored. No 
te that the name and value quoted here may be corrupted due to the failed decoding. Use debug level 
logging to see the original, non-corrupted values. 
java.io.CharConversionException: EOF 
     at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:80) 
     at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:46) 
     at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:410) 
     at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:370) 
     at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:217) 
     at org.apache.catalina.connector.Request.parseParameters(Request.java:2647) 
     at org.apache.catalina.connector.Request.getParameter(Request.java:1106) 
     at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:355) 
     at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:158) 

Во время исследования я считаю, что:

Special characters are not allowed inside the query string. They must be replaced by a "%" followed by the ASCII code in Hex. E.g., "~" is replaced by "%7E", "#" by "%23" and so on. Since blank is rather common, it can be replaced by either "%20" or "+" (the "+" character must be replaced by "%2B"). This replacement process is called URL-encoding, and the result is a URL-encoded query string. 

Так означает ли это, что мы не можем использовать% в качестве значения в полях ввода?

+0

Вы можете попытаться это с лесозаготовками уровня отладки и предоставить эти журналы? – Dancrumb

ответ

1

Наконец получил решение,

Перед добавлением параметров в строке запроса я использовал encodeURIComponent функцию JavaScript. От W3Schools

The encodeURI() function is used to encode a URI. 
This function encodes special characters, except: ,/? : @ & = + $ # (Use encodeURIComponent() to encode these characters). 

Tip: Use the decodeURI() function to decode an encoded URI. 
1

Вы пытаетесь URL-декодировать строку, которая уже была расшифрована URL-адресом на предыдущем шаге. Это ваша основная причина.

Различия между двумя наборами утвержденных и недействительных строк - это символ «&». Не уверен, почему именно те, у кого есть амперсанд, проверяют ... возможно, парсер останавливается до достижения «%», потому что «&» рассматривается как разделитель.