【问题标题】:handling special characters in parameters with XMLHttpRequest [duplicate]使用 XMLHttpRequest 处理参数中的特殊字符 [重复]
【发布时间】:2016-09-07 14:23:18
【问题描述】:

尝试使用 xmlHttpRequest 从前端(javascript)与 POST 和其他名称类似的参数发送密码

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

我正在使用HttpServletRequest.getparameter来获取密码的参数字符串,例如string pswd = request.getparameter("password");

该代码适用于所有具有特殊字符的密码,除了 qwe100%qwe、qwe198%qwe 之类的密码 当我传递这些密码时,如果我要读取与密码一起发送的用户名或其他参数也会导致异常[illegalArgumentException] 任何帮助表示赞赏..

【问题讨论】:

    标签: javascript servlets xmlhttprequest special-characters


    【解决方案1】:

    您需要在 JavaScript 端使用encodeURIComponent,然后再将其传递到后端。

    即:

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

    请注意,在 Java 端,您应该执行以下操作:

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

    编辑

    正如@BalusC 指出的那样,我在 Java 方面是错误的 - 您已经完成了 JavaScript 方面所需的工作,因此您不需要 Java 部分。

    【讨论】:

    • JavaScript 部分是正确的。 Java 部分不正确。 Servlet 已经自动执行此操作(此外,OP 面临的异常表明了这一点)。当您仍然显式解码它时,您基本上会对其进行双重解码,从而导致相同的异常。
    • 已编辑 - 你是对的 - 感谢您指出这一点。我浏览了自己的代码,也没有执行 URLDecoder - 当我无法阅读自己的代码时,这非常糟糕。
    猜你喜欢
    • 1970-01-01
    • 2013-08-25
    • 2012-04-05
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多