Typescript前端向Node后端传Header数据时后端获值为undefined的问题
问题解决:前端通过Headers传值到Express后端返回undefined
核心问题
你的前端Angular HttpClient的post方法调用存在两个关键错误,导致后端无法获取到Header中的rut值:
- 参数顺序错误:Angular HttpClient的
post方法签名为post(url: string, body: any, options: HttpOptions),你把headers配置错误地放在了第二个参数(body的位置),正确位置是第三个参数的options对象中。 - 变量引用错误:headers里的
rut值直接写了rut,未正确引用传入的paciente对象的rut属性,应该使用paciente.rut。
修正后的前端代码
export class PacienteService { private myAppUrl: string; private myApiUrl: string; constructor(private http: HttpClient) { this.myAppUrl = environments.endpoint; this.myApiUrl = 'api/pacientes' } postPaciente(paciente: Paciente) { console.log(`${this.myAppUrl}${this.myApiUrl}/`); console.log('Rut: ' + paciente.rut); // 修正参数顺序,将headers放入options,并正确引用paciente的rut属性 return this.http.post<any>( `${this.myAppUrl}${this.myApiUrl}/`, {}, // POST无body需求时传入空对象 { headers: {'rut': paciente.rut} } ); } }
额外验证步骤
- 打开浏览器开发者工具的Network面板,查看发送的POST请求的Request Headers,确认
rut字段已被正确携带。 - 确认后端Express未开启严格的Header大小写校验(HTTP Header本身不区分大小写,Express的
req.headers会自动统一转成小写,无需额外处理)。
内容的提问来源于stack exchange,提问作者Joaquin Ibañez Lopez
相关产品推荐
相关产品推荐

