unescape online escaped escape convert characters java javascript cookies escaping

java - online - text escape



UnEscape JavaScript escapĆ³ el valor en JAVA (4)

en nuestro servicio web configuramos una cookie a través de JavaScript que leemos nuevamente en Java (Servlet)

sin embargo, tenemos que escapar del valor de la cookie porque puede contener caracteres ilegales como "&" que arruina la cookie.

¿hay una forma transparente de escapar (JavaScript) y volver a desensamblar (JAVA) para esto?

gracias, Pieter Goddijn


Cliente JavaScript / ECMAScript:

encodeURIComponent(cookie_value) // also encodes "+" and ";", see http://xkr.us/articles/javascript/encode-compare/

Servidor Java:

String cookie_value = java.net.URLDecoder.decode(cookie.getValue());

Agregaré más descubrimientos a mi entrada de blog .


La forma más precisa sería Excecute javascript con tu código java. Espero que el código a continuación ayude.

ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("JavaScript"); ScriptContext context = engine.getContext(); engine.eval("function decodeStr(encoded){" + "var result = unescape(encoded);" + "return result;" + "};",context); Invocable inv; inv = (Invocable) engine; String res = (String)inv.invokeFunction("decodeStr", new Object[]{cookie.getValue()});



StringEscapeUtils de common lang no funcionó para mí.

Simplemente puede usar el motor javascript nashorn para eliminar el escape de una cadena javascript escapada.

private String decodeJavascriptString(final String encodedString) { ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); Invocable invocable = (Invocable) engine; String decodedString = encodedString; try { decodedString = (String) invocable.invokeFunction("unescape", encodedString); } catch (ScriptException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } return decodedString; }