Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t发送包含特殊字符的密码(替换为空格)_Javascript_Angularjs - Fatal编程技术网

Javascript Can';t发送包含特殊字符的密码(替换为空格)

Javascript Can';t发送包含特殊字符的密码(替换为空格),javascript,angularjs,Javascript,Angularjs,我需要发送包含特殊字符的密码。例如:包含abc+的密码在服务器端以abc(空格)结束,这是错误的,破坏了前面的大象。服务器是无罪的,因为我检查了网络,angular确实向服务器发送了带空格的“abc”,而不是“abc+”。因此,问题在于客户端代码 login: function (param) { var data, config = {

我需要发送包含特殊字符的密码。例如:包含abc+的密码在服务器端以abc(空格)结束,这是错误的,破坏了前面的大象。服务器是无罪的,因为我检查了网络,angular确实向服务器发送了带空格的“abc”,而不是“abc+”。因此,问题在于客户端代码

 login: function (param) {
                        var data,
                            config = {
                                headers: {
                                    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'

                            },
                            ignoreAuthModule: 'ignoreAuthModule'
                        };

                    data = 'j_username=' + param.username + '&j_password=' + param.password + '&_spring_security_remember_me=' + param.rememberMe + '&submit=Login';
                    if (!angular.isUndefined(param.service)) {
                        data += '&service=' + param.service;
                    }

                    $http.post('app/authentication', data, config).success(
                        function (data, status, headers, config) {
                            $rootScope.registrationSuccess = false;
                            $rootScope.authenticationError = false;
                            $rootScope.userLocked = false;
                            if (param.success) {
                                param.success(data, status, headers, config);
                            }
                        }
                    ) ...

当我调试代码时,j_密码实际上有“abc+”。我想有些配置是错误的。请帮助可怜的java开发人员。

您应该使用encodeURIComponent对参数进行编码。比如说,

data = 'j_username=' + encodeURIComponent(param.username) + '&j_password=' + encodeURIComponentparam.password) + '&_spring_security_remember_me=' + encodeURIComponent(param.rememberMe) + '&submit=Login';

您应该对参数进行UrlEncode(或Base64)编码。您可以使用。
encodeURIComponent(param.username)
etc来执行此操作。但是,我不确定我是否可以帮助您处理大象。谢谢:-)。最重要的是CAS服务器、CAS代理、CAS客户端和十几个Spring安全组件。这就是我认为的问题所在。啊,另一个java开发人员试图编写javascript…;)如果smbdy像我一样通过restTemplate转发请求,那么我建议org.yaml.snakeyaml.util.Uricoder发送多部分表单编码数据。(您正在使用yml,对吗?:-))