使用GET请求资源时一个隐蔽的问题

1.问题描述

我的工程中需要用户在前端输入口令并进行一些计算,然后将计算后的口令发送至后台服务器进行计算。之前采用的手段是直接发送一个GET请求:

location.href =  "/demoserver?username="+username+"&password="+password;

但是这样做会产生一个比较隐蔽的问题:用户的口令中有可能包含“&”或者“%”等有着特殊语义的字符,会导致服务器不能正确理解URL的语义。

2.解决方法:

location.href是无法发送POST请求的,所以我们还是要调用form中的submit()函数。具体可以构造一个专门用于发送POST请求的form节点,如下所示:
在html中添加:

    
"display:hidden" action = "/demoserver" method = "POST" id = "register"> type = "hidden" id = "id_username" name = "username" value = ""/> type = "hidden" id = "id_password" name = "password" value = ""/> type = "hidden" name = "${_csrf.parameterName}" value="${_csrf.token}" />
...

在对应的JS文件中添加:

    var username = ...;
    var password = ...;
    $("#id_username").val(username);
    $("#id_password").val(password);
    $("#register").submit();

你可能感兴趣的:(前端)