【问题标题】:Sending Data Error with angular's $http.put使用 Angular 的 $http.put 发送数据错误
【发布时间】:2016-03-04 00:08:37
【问题描述】:

每当我触发这个 put 方法时:

return $http.put('/posts/' + post._id + '/upvote', {
  headers: {Authorization: 'Bearer '+auth.getToken()}
}).success(function(data){
  post.upvotes += 1;
});

我收到以下错误:

PUT http://localhost:3000/posts/56d89bfbb906ee1305fea2cf/upvote 401(未经授权)

据我了解,这是其 put 方法支持向服务器发送数据的方式的角度问题。

在此之前处理过此问题的任何人都可以帮助我吗?

-提前非常感谢您

【问题讨论】:

  • 尝试发送与getpostman.com 相同结果的消息?
  • 不明白为什么这会是一个角度问题。服务器设置好了吗? auth 标头是否正确?

标签: angularjs http put


【解决方案1】:

尝试预先设置 HTTP 标头:

$http.defaults.headers.common.Authorization = 'Bearer '+ auth.getToken();

然后调用你的 PUT 请求

【讨论】:

  • 成功了!会给你一个赞成票,但我的排名太低:(当/如果你有时间,你能解释一下为什么我的原始方法不起作用而你的方法起作用。另外,如果某些操作不需要授权怎么办,但常见的标题是为到达我的服务器的所有http请求设置,有没有办法区分那些需要身份验证的操作和那些不需要身份验证的操作.我对使用角度授权非常陌生,所以如果这个问题很愚蠢,请原谅.在同时,我将在 $http 上做更多的阅读
  • 我认为如果您使用完整版本的 $http({method:'PUT',headers: { .... }) 而不是 $http.put,您仍然可以通过每个请求的标头.尝试它可能仍然对您有用。这个页面也很好地了解了 $http 的一般工作原理docs.angularjs.org/api/ng/service/$http
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-14
  • 1970-01-01
相关资源
最近更新 更多