javascript - 使用 JavaScript 和 API 密钥和基本身份验证访问 API (Billbee)
问题描述
最近我开始使用 API 和 JavaScript。现在,为了使用“真实”项目进行测试,我想访问存储在名为 Billbee 的商品管理系统中的数据。他们提供 API 并在此处提供简短文档:https ://app.billbee.io//swagger/ui/index
为了访问系统中的数据,Billbee 要求:
- 包含标识应用程序/开发人员的有效 API 密钥。它必须作为 HTTP 标头 X-Billbee-Api-Key 发送
- 以基本身份验证 HTTP 标头的形式包含具有 billbee 用户名和 api 密码的有效用户登录
我在其他一些没有 API 密钥和身份验证的 API 上尝试了我的代码,并且它有效。所以可能是认证有问题...
这是我的代码的相关部分:
var username = "***@***.de";
var password = "*******";
let xhr = new XMLHttpRequest();
xhr.open('GET', "https://app.billbee.io/api/v1/orders?tag=Picking", true);
xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password));
xhr.setRequestHeader("X-Billbee-Api-Key", "D0A057BD-F2DA-4570-AE07-F051C8A967A6");
xhr.send();
在控制台中,我收到以下错误:
[错误] 预检响应不成功
[错误] XMLHttpRequest 无法加载https://app.billbee.io/api/v1/orders?tag=Picking由于访问控制检查。
[错误] 加载资源失败:预检响应不成功(订单,第 0 行)
有什么我错过的吗?
谢谢参观
解决方案
Access-Control-Allow-Origin
是一个响应头,表示它来自API。
浏览器会阻止您,因为出于安全原因,它通常允许同一来源的请求。您可能需要在billbee上进行一些配置。
推荐阅读
- mysql - MySQL JOIN Query Show Columns with IF ELSE Selected Option
- android - 如果我可以让它像单例一样,我为什么要 bindService 呢?
- c - OpenGL 使用鼠标进行 FPS 风格移动
- r - 使用 R 中的 Rvest 从表中删除多个标题行
- angular - 从 ReplaySubjects 列表中获取第一个值,执行特定的操作,然后继续流式传输剩余的值
- android - 如何将 Android 上下文注入顶级函数
- listview - TListview (FMX) 下的 TTextButtonObjectAppearance 中的错误?
- azure - 如何识别每个用户的成本并在 azure 中进行管理
- python - 从列表中迭代以返回数据
- ios - 实现 Stripe 时必需的 Init 抛出致命错误