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

Node.js调用Readme.io API遇Unauthorized错误,请求排查原因

问题分析与解决方案

你的Node.js代码核心问题是Basic认证的Authorization头格式不符合规范。

当你用curl -u API_KEY:发起请求时,curl会自动帮你把API_KEY:这个字符串转换成Base64编码,再生成符合要求的Authorization: Basic <base64编码值>请求头。但你直接在fetch的headers里写'Authorization': 'Basic API_KEY:',是把明文的API_KEY:放在了Basic后面,这完全不符合Basic认证的要求,所以API返回了未授权错误。

正确的实现方式

你需要手动将API_KEY:转换成Base64编码,再拼接到Authorization头中。在Node.js里可以用Buffer轻松完成这个编码操作:

const apiKey = '你的实际API_KEY';
// 将"API_KEY:"字符串转换为Base64编码
const encodedAuth = Buffer.from(`${apiKey}:`).toString('base64');

const options = { 
  method: 'GET', 
  headers: { 'Authorization': `Basic ${encodedAuth}` } 
};

fetch('https://dash.readme.io/api/v1', options)
 .then(res => res.text())
 .then(body => console.log(body))
 .catch(err => console.log('ERROR', err))

为什么curl能正常工作?

curl的-u(或--user)参数自带Basic认证的编码处理逻辑:它接收用户名:密码格式的字符串,自动编码成Base64后添加到请求头里,所以你不需要手动处理编码步骤。而fetch没有这个自动处理功能,必须自己完成编码操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:04:29