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

How to avoid displaying parameters in the URL when doing an $http GET with Angularjs

本文关键字:时在 GET URL 参数 显示 http 何避免 执行 Angularjs      更新时间:2023-09-26

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

但是,我不希望在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中使用<form></form>标记时,它会将所有信息粘贴到浏览器中的URL。当我删除html页面中的<form>标记时,一切都消失了。