Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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 如何避免在使用Angularjs执行$http GET时在URL中显示参数_Javascript_Angularjs_Url_Parameters - Fatal编程技术网

Javascript 如何避免在使用Angularjs执行$http GET时在URL中显示参数

Javascript 如何避免在使用Angularjs执行$http GET时在URL中显示参数,javascript,angularjs,url,parameters,Javascript,Angularjs,Url,Parameters,我有一个非常简单的登录,但是由于我们的后端结构,我必须使用$HTTPGET请求和angularjs进行登录 但是,我不希望在URL中看到用户名和密码 所以我很好奇我能做些什么来解决这个问题?任何帮助都将不胜感激 这是我的LoginController.js self.login = function() { if (self.username == '' || self.password == '') { alert("Please Check your creden

我有一个非常简单的登录,但是由于我们的后端结构,我必须使用$HTTPGET请求和angularjs进行登录

但是,我不希望在URL中看到用户名和密码

所以我很好奇我能做些什么来解决这个问题?任何帮助都将不胜感激

这是我的LoginController.js

self.login = function() {

    if (self.username == '' || self.password == '') {

        alert("Please Check your credentials");
    } else {
        LoginService.login(self.username, self.password).then(function (resp) {
            //console.log(resp);
                LoginService.setCredentials(self.username,self.password);
                $state.go('dashboard');
        })
    }

}
这里是LoginService.js

    var loginSuccess = function (response) {
        //console.log(response.data);
        //console.log(response.data.keyId);

        $rootScope.keyId = response.data.keyId;
        $cookies.put('keyId',$rootScope.keyId);

        self.isLoggedIn = true;
        //$state.go('dashboard');

        return response.data;

    };

    return {

        login: function (username, password) {
            return $http({
                method: 'GET',
                url: 'https://URLHERE/ApplicationKeys/'+username+'Key/?userid='+username+'&password='+password,
                headers: {'ACCEPT':'application/json'}
            }).then(loginSuccess,loginFailure);
        },
        isLoggedIn: function () {
            return self.isLoggedIn;
        },

如果您控制与之对话的服务器,则应将其修改为POST。获取用于获取信息,而不是更新信息

您还可以传递数据对象,而不是将其作为url的一部分

return $http({
            method: 'GET',
            url: 'https://URLHERE/ApplicationKeys/'+username+'Key/',
            headers: {'ACCEPT':'application/json'},
            data: {userid: username, password: password}
        }).then(loginSuccess,loginFailure);

我自己找到了答案。显然,当您在html中使用
标记时,会将所有信息粘贴到浏览器中的URL。当我删除html页面中的
标记时,一切都消失了。

为什么要获取包含用户名和密码的内容。POST是正确的方法。你不希望有人能够仅仅通过一个链接来实现这一点。我知道这一点,但这不是我可以更改的,我需要获取应用程序密钥,并且没有后期服务,所以他们告诉我使用GET,他们现在无法更改。你的意思是将数据对象传递给“login:function”吗(username,password)“here”?在您的代码示例中使用上面的$http方法调用。