Angular的$ http.post无法在MS Edge中使用

时间:2017-08-02 14:11:17

标签: javascript angularjs

我正在尝试通过AngularJS使用返回JSON的$​​ http.post进行Web 2.0 API调用,这可能听起来很奇怪,它在一小时前工作,现在它没有,我没有改变事情。该应用程序继续在所有其他浏览器中工作,它在Edge中失败。

var _login = function (loginData) {
        var data = "";
        var grant = [insert data to authorise user on server];
        var deferred = $q.defer();
        $http.post(serviceBase + 'token', data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).success(function (response) {
            _userlogin(response);
            deferred.resolve(response);
        }).error(function (err, status) {
            console.log(err + " " + status);
            _logOut();
            deferred.reject(err);
        });
        return deferred.promise;
    };

我不得不在那里获取一些信息,因为它是安全信息,但功能应该是相同的,所以,从调试我知道这是应用程序绊倒的地方。我也知道传入的logindata是有效的,我在REST客户端上使用相同的授权尝试了相同的调用,并且工作正常,就像我在同一个调用之前提到的那样,在任何其他主要浏览器中都没有进行任何更改(包括IE)古怪)。

运行该调用时,前端角度执行以下操作:

$scope.authUser = function (username, password) {
            var loginData = { userName: username, password: password, useRefreshTokens: login.useRefreshTokens}
            authService.login(loginData).then(function (response) {
                console.log(response);
                sessionStorage.setItem("status", "User Logged In As: ");
                sessionStorage.setItem("username", username);
                global.template = "templates/dashboard.html";
                login.password = "";
            },
            function (err) {
                console.log(err);
                login.message = err.error_description;
                $("#passwordError").modal();
            });
        };

应用程序在login.message = err.error_description;处停止,因为它未从API调用返回。错误是:网络错误0x2efd,由于错误00002efd无法完成操作。并且无法获取未定义或空引用的属性“error_description”。

编辑:忘记提及 - 当Fiddler打开并捕获流量时,应用程序可以正常工作。那是最奇怪的部分。

1 个答案:

答案 0 :(得分:1)

查看使用this提及的解决方案的here帖子。他们说问题在于localhost与localhost之间的交互。

我很高兴能够提供帮助。