node.js - 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
解决方案
put 方法的前两个参数是 (URL, body),第三个可选参数是包含标题的选项,因此您需要将其更改为: put(this.base_path+"/user/UpdateRdvByID", null, { httpHeader } )。
推荐阅读
- c - 信号处理程序在执行后结束进程
- javascript - 更改 JavaScript 过滤器以过滤值是否包含/包含值
- laravel - production.ERROR:类 App\Http\Middleware\SetLocale 在 Laravel 中不存在
- discord - 如何使用 guilds.join?
- dc.js - Basic dc.js dataTable 显示错误数据
- python - 如何使用 Pandas 创建日期(天)间隔
- swift - instagram 故事布局集合视图 swift - 以编程方式
- ruby-on-rails - CarrierWave 在非常简单的步骤中不起作用
- javascript - 如何将一个组件覆盖在另一个之上
- html - css:绝对定位的 div 在父级中具有错误的大小