【问题标题】:Angular 5 Cannot PUT with 401 ErrorsAngular 5 无法 PUT 并出现 401 错误
【发布时间】:2023-03-08 23:47:01
【问题描述】:

我想在我的角度服务和快递路线上使用 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)
})

我的浏览器日志错误:

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

已编辑这是来自 console.log :

响应{_body:“未授权”,状态:401,ok:false,statusText: “未经授权”,标头:标头,...}标头:标头{_headers: 地图(0),_normalizedNames:地图(0)}正常:错误状态:401 statusText: “未经授权”类型:2 url: “http://localhost:8080/users/makeAdmin/5b57219f1e1be6279c95a5be” _body : "未经授权" 原型:正文

【问题讨论】:

    标签: javascript angular express


    【解决方案1】:

    由于您使用的是mapHeaders 而不是HttpHeaders,我假设您使用的是angular 的旧Http 客户端,而不是新的HttpClient 类。

    PUT 方法需要一个主体 (documentation),所以试试这个

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

    如果您不指定null 作为正文,则标头作为正文参数发送,带有实际标头的选项参数留空。

    【讨论】:

      【解决方案2】:

      试试:

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

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

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

      【讨论】:

      • 用户所说的也是正确的。您只是在单行中重写它。
      • No..headers 是不可变的,我编辑以添加更多信息
      • 我已经改成你的了,但还是给我401回复
      • 随请求一起发送时令牌是否存在或有效?
      • 令牌有效,我检查了本地存储,并尝试重新登录以制作另一个令牌,但仍然是 401。GET 和 DELETE 在这种情况下有效,但 POST 和 PUT 给出我 401。
      猜你喜欢
      • 2022-01-10
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 2018-11-17
      • 2013-10-27
      相关资源
      最近更新 更多