将带身份凭证的cURL请求转换为Node.js环境可用的fetch请求
原因
Node.js 环境没有提供浏览器端专属的 btoa() 全局方法,你之前的代码还存在凭证字符串末尾多冗余空格的问题,两者都会导致身份校验失败返回401。
解决方案
使用 Node.js 内置的 Buffer 模块完成 Base64 编码即可,和浏览器 btoa() 效果完全一致,适配 Donorbox 的 Basic Auth 校验规则,正确实现代码如下:
try { // 拼接身份凭证,不要加多余空格 const authInfo = 'login@email.com:YOUR_API_KEY'; // Node.js 标准Base64编码实现 const base64Auth = Buffer.from(authInfo).toString('base64'); const result = await fetch('https://donorbox.org/api/v1/campaigns', { headers: { 'Authorization': `Basic ${base64Auth}` } }); // 可选:提前判断响应状态,方便排查问题 if (!result.ok) { throw new Error(`请求异常,状态码:${result.status}`); } const resData = await result.json(); console.log('请求成功:', resData); } catch (error) { console.log('ERROR'); console.log(error); }
内容的提问来源于stack exchange,提问作者nizoom
相关产品推荐
相关产品推荐

