如何在Axios请求中携带API密钥与密码调用BambooHr API并解决CORS问题
BambooHr API 认证与CORS问题解决方案
一、实现Basic认证
BambooHr API采用Basic认证机制,需要将API密钥和密码组合后进行Base64编码,再通过请求头传递,具体实现步骤如下:
- 拼接认证字符串:按
${你的API密钥}:${你的密码}格式组合,BambooHr允许密码为空(即仅写API密钥:即可)。 - 编码字符串:
- 浏览器环境使用原生
btoa()方法 - Node.js环境使用
Buffer.from().toString('base64')方法
- 浏览器环境使用原生
- 在axios请求中添加Authorization请求头
浏览器环境代码示例
const apiKey = '你的API密钥'; const password = '你的密码'; // 可以是空字符串 const authToken = btoa(`${apiKey}:${password}`); axios.get('https://api.bamboohr.com/api/gateway.php/companyDomain/v1/employees/2223/photo/large', { headers: { 'Authorization': `Basic ${authToken}` } }) .then(res => console.log("response ", res)) .catch(err => console.error('请求出错:', err));
Node.js环境代码示例
const axios = require('axios'); const apiKey = '你的API密钥'; const password = '你的密码'; // 可以是空字符串 const authToken = Buffer.from(`${apiKey}:${password}`).toString('base64'); axios.get('https://api.bamboohr.com/api/gateway.php/companyDomain/v1/employees/2223/photo/large', { headers: { 'Authorization': `Basic ${authToken}` } }) .then(res => console.log("response ", res)) .catch(err => console.error('请求出错:', err));
二、解决CORS错误
前端直接调用BambooHr API会触发浏览器同源策略限制,导致CORS错误,推荐以下两种解决方案:
- 后端代理请求:搭建一个自己的后端服务(如Node.js、Java等),前端调用该后端接口,由后端负责转发请求到BambooHr API。这种方式既解决了跨域问题,还能避免API密钥暴露在前端代码中,是最优方案。
- 配置BambooHr CORS白名单:若使用的是BambooHr企业版,可联系管理员将你的前端域名加入CORS允许列表。但此方法仍存在API密钥泄露风险,不推荐直接在前端调用API。
内容的提问来源于stack exchange,提问作者user20042604
相关产品推荐
相关产品推荐

