You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js发送POST请求始终返回401(未授权)错误求助

解决Node.js POST请求401未授权错误

核心问题分析

你的代码存在几个关键错误,直接导致了401未授权:

  1. Base64编码逻辑错误
    你在Buffer.from中错误地将第二个参数设为base64,这会让Node.js把username:password当作base64格式字符串解析,再重复转码一次,最终生成的授权字符串完全无效。

  2. 不必要的no-cors模式
    Node.js环境不存在浏览器的跨域限制,设置mode: 'no-cors'会强制限制请求头发送,导致Authorization头被丢弃,服务器收不到授权信息。

  3. Content-Type可能不匹配
    服务器大概率不接受text/html类型的POST请求体,需要根据接口要求调整Content-Type。

修正后的代码示例

// 正确的Basic Auth编码方式
const authString = Buffer.from('username:password').toString('base64');

const response = await fetch('你的目标URL', {
  method: 'POST',
  // 移除no-cors模式
  headers: {
    // 根据服务器要求调整Content-Type,常用值:application/json / application/x-www-form-urlencoded
    "Content-Type": "application/json",
    "Authorization": `Basic ${authString}`
  },
  // 按接口要求传入合法请求体,示例为JSON格式
  body: JSON.stringify({})
});

// 验证请求结果
if (response.ok) {
  const data = await response.json();
  console.log(data);
} else {
  console.error('请求失败,状态码:', response.status);
}

额外排查点

  • 确认username和password是服务器认可的有效凭据,无拼写错误或权限不足问题。
  • 如果服务器要求Bearer Token而非Basic Auth,需调整Authorization头格式为Bearer 你的令牌。
  • 检查服务器是否有其他验证机制(如CSRF令牌),需在请求头或体中一并发送对应参数。

内容的提问来源于stack exchange,提问作者lo7su

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:30:43