首页 > 解决方案 > Angular http put请求不发送标头

问题描述

我正在尝试从角度向节点 js Web API 发出 http put 请求,请求已正确完成问题是没有获取节点 js 标头中发送的值,我确保问题出在 http将请求标头放入角度,因为我使用邮递员尝试了具有相同标头的相同请求并且它运行正确。这是角代码:

UpdateRdvById(token){
  let  httpHeader = {
    headers: new HttpHeaders({
       "token": "test2" ,
       "etat":"test"
    })
  } ;
    return this.http.put(this.base_path+"/user/UpdateRdvByID",httpHeader).pipe()
}

发送请求后的角度日志:

n: 0
nModified: 0
opTime: {ts: "6814399187757564185", t: 10}
electionId: "7fffffff000000000000000a"
ok: 1
$clusterTime: {clusterTime: "6814399187757564185", signature: {…}}
operationTime: "6814399187757564185"
__proto__: Object

这是节点js代码:

router.put("/UpdateRdvByID", async (req, res) => {
  try {
    var host = req.headers['token'];
   var etat = req.headers['etat'];
    var query = { _id : host };
console.log('id'+req.headers['token']);
console.log('etat'+req.headers['etat']);
    const rdv = await Rendezvous.updateOne(query,{etat:etat});
    res.json(rdv);
  } catch (err) {
    console.log(err) ;
    res.send({ message: "Error in Fetching rendez vous"+err});
  }
});

这是它应该从标题中打印值但它得到 'undefined' 的问题。节点 js 日志:

idundefined
etatundefined

标签: node.jsangulartypescripthttp-headers

解决方案


put 方法的前两个参数是 (URL, body),第三个可选参数是包含标题的选项,因此您需要将其更改为: put(this.base_path+"/user/UpdateRdvByID", null, { httpHeader } )。


推荐阅读