javascript - 为什么我对 Printful API 的请求被拒绝访问?
问题描述
所以,我正在尝试调用 Printful API。首先,我按照文档页面中的“如何开始”部分进行操作。在“商店”选项下,我将 URL 设置为指向我的网站,然后我进入“API”选项并生成我的 API 密钥。我提出请求的方式是基于“授权”部分,也来自文档。据我了解,我唯一需要做的就是发送带有使用 base64 编码的 API 密钥的授权标头,并且它应该可以工作。
var API_KEY = '---';
var API_KEY64 = btoa(API_KEY);
$.ajax({
url: 'https://api.printful.com/products',
headers: {
'Authorization': 'Basic ' + API_KEY64
},
dataType: 'JSON',
type: 'GET',
complete: function (data) {
if (data.readyState == '4' && data.status == '200') {
p.innerHTML = 'success';
}
else {
p.innerHTML = 'error';
}
}
});
当我运行此代码时会发生什么,p元素的内部 HTML 变为错误,我在控制台中收到此错误:
我尝试排除标题以查看会发生什么:我收到一个类似的错误,除了没有关于飞行前检查的部分:
如果我将请求直接发送到“ https://api.printful.com ”(在这里发送请求没有意义;只是为了看看我得到了什么),我得到的是:
在四天的时间里,我还向 Printful 的开发支持发送了多封电子邮件,但我还没有收到他们的任何消息。
互联网上有关 API 的信息非常稀少。我真的发现只有一个人问这个问题。任何地方都没有教程或代码示例。
我还研究了一些关于跨域资源共享的信息,希望 Access-Control-Allow-Origin 是我可以在客户端设置的东西(同样,没有意义;只是在黑暗中拍摄)。
感谢您提前提供任何帮助和/或见解。
解决方案
因为 Printful 没有配置他们的 API 服务器来允许跨域 Ajax 请求。
请注意,它们为几种不同的语言提供了许多客户端库,但不针对客户端 JavaScript。
另请注意,在他们链接到的页面中,他们对您的 API 密钥有这样的说法:
将 API 密钥保密,切勿在任何公共网站的客户端代码中公开它。
(请注意,您现在已经在 Stackoverflow 问题中发布了您的 API 密钥,它是公开的,将被搜索引擎索引并缓存。您需要获取 Printful 来销毁它并立即创建一个新的。)
推荐阅读
- java - Guice - 绑定注解配置错误
- python - 以块形式发送数据时出现套接字错误
- nearprotocol - 使用 Ubuntu 20.04.1 LTS 但在使用 Windows 10 时的多个测试“集合状态不一致”
- python - 使用 python seaborn 动画热图
- cron - 我在使用 Cronjob 和 Python3 脚本时需要帮助
- sql - psql:如何在带有时间戳的表上对类似的连续事件进行分组
- android - AppDatabase_Impl不存在通过本地添加.jar文件Android Studio
- frequency - 如何使用 datastep 计算频率和百分比?
- mips - 4 输入 MIPS 计算器
- rust - 预期的 struct `Box` 找到了闭包 - Rust