Angular 的 $http.post 在 MS Edge 中不起作用
Posted
技术标签:
【中文标题】Angular 的 $http.post 在 MS Edge 中不起作用【英文标题】:Angular's $http.post not working in MS Edge 【发布时间】:2018-01-09 19:45:56 【问题描述】:我正在尝试使用返回 JSON 的 $http.post 通过 AngularJS 进行 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;
;
我不得不取出一些信息,因为它是安全信息,但功能应该是相同的,所以,通过调试,我知道这是应用程序出错的地方。我也知道传入的登录数据是有效的,并且我已经在 REST 客户端上尝试了具有相同授权的相同调用,并且工作正常,就像我之前提到的相同调用没有更改在任何其他主要浏览器中运行(包括 IE奇怪)。
当该调用运行时,前端 Angular 执行以下操作:
$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 打开并捕获流量时,该应用程序可以工作。这是最奇怪的部分。
【问题讨论】:
从您的代码中删除所有console.log
。有时,它可以解决 IE 问题。
没有仍然损坏 - 两个错误是:无法获取未定义或空引用的属性 'error_description' 和网络错误 0x2efd,由于错误 00002efd 无法完成操作。
我不确定,但可能与您的标题有关。只需将它们更改为 application/json 并检查(以确保问题仍然存在)在我的应用程序中,http 现在可以正常工作。
看看这个post,它使用了here提到的解决方案。他们说问题在于本地主机与本地主机之间的交互。希望对您有所帮助。
@Mickers - 谢谢!这就是问题所在 - 至少现在我知道我可以在应用程序发布时测试 Edge - 如果你把它作为答案输入,我会标记它以供将来参考
【参考方案1】:
查看使用here 提到的解决方案的this 帖子。他们说问题在于本地主机与本地主机之间的交互。
很高兴我能提供帮助。
【讨论】:
以上是关于Angular 的 $http.post 在 MS Edge 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
angular2 http.post 方法抛出 typeerror 异常
在 Angular 2 http.post 上添加任何选项或标题会发送 OPTIONS
如何在 Angular 4 Universal 中发出 http post 请求?