Angular 5无法放置401错误

时间:2018-07-24 13:34:26

标签: javascript angular express

我想在我的角度服务上使用PUT方法更新数据并表达路线,但它给我401错误。这是我的服务:

//401
makeAdmin(_id) {
  this.loadToken()
  let headers = new Headers()
  headers.append('Authorization', this.authToken)
  console.log(_id)
  headers.append('Content-Type', 'application/json')
  return this.http.put(this.baseUri+'users/makeAdmin/'+_id,{headers: headers})
    .map(res => res.json())
}

但是当我使用GETDELETE方法时,它可以将数据发送到我的快速路由。这是我的快速路线:

router.put('/makeAdmin/:id',passport.authenticate('jwt', {session:false}),(req, res, next)=>{
    console.log(req.params.id)
})

我的浏览器日志错误:

  

输入http://localhost:8080/users/makeAdmin/5b57219f1e1be6279c95a5be 401   (未经授权)core.js:1440错误响应{_body:“未经授权”,   状态:401,确定:否,状态文本:“未经授权”,标题:   标头,…}

已编辑,这来自console.log:

  

响应{_body:“未经授权”,状态:401,确定:false,statusText:   “未经授权”,标题:标题,…}标题:标题{_headers:   Map(0),_normalizedNames:Map(0)}正常:错误状态:401 statusText:   “未经授权”类型:2网址:   “ http://localhost:8080/users/makeAdmin/5b57219f1e1be6279c95a5be”   _body:“未经授权”    proto :正文

2 个答案:

答案 0 :(得分:2)

尝试:

let headers = new Headers().append('Authorization', this.authToken);

来自HttpHeaders文档:不可变的Http标头集,带有延迟解析。

https://angular.io/api/common/http/HttpHeaders

答案 1 :(得分:2)

由于您使用的是mapHeaders而不是HttpHeaders,所以我假设您使用的是Angle的旧Http客户端,而不是新的HttpClient课。

PUT方法需要一个正文(documentation),因此请尝试

return this.http.put(this.baseUri+'users/makeAdmin/'+_id, null, {headers: headers})
.map(res => res.json())

如果您未将null指定为主体,则标题将作为body参数发送,而带有实际标题的options参数将保留为空。