我想在我的角度服务上使用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())
}
但是当我使用GET
或DELETE
方法时,它可以将数据发送到我的快速路由。这是我的快速路线:
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 :正文
答案 0 :(得分:2)
尝试:
let headers = new Headers().append('Authorization', this.authToken);
来自HttpHeaders文档:不可变的Http标头集,带有延迟解析。
答案 1 :(得分:2)
由于您使用的是map
和Headers
而不是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参数将保留为空。