所以,我试图打电话给Printful API。首先,我按照"如何开始"来自documentation page的部分。在"商店"选项我将URL设置为指向我的网站,之后我进入了" API"选项并生成我的API密钥。 我提出请求的方式是基于"授权"部分,也来自文档。据我所知,我唯一需要做的就是发送带有使用base64编码的API密钥的Authorization标头,它应该可以工作。
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会出错,我在控制台中收到此错误:
我已经尝试排除标题,看看会发生什么:我得到一个类似的错误,除了没有关于飞行前检查的部分:
如果我将请求直接发送到&{39; https://api.printful.com'(在这里发送请求没有意义;只是为了看看我得到了什么),我得到了什么是:
我还在四天的时间内向Printful的开发支持发送了多封电子邮件,但我还没有听到任何消息。
有关互联网上API的信息非常稀少。我确实发现只有一个人提出有关它的问题。在任何地方都没有教程或代码示例。
我还研究了一些关于跨源资源共享的内容,希望Access-Control-Allow-Origin是我可以在客户端设置的东西(再次,没有意义;只是在黑暗中拍摄。)
提前感谢您提供任何帮助和/或见解。
答案 0 :(得分:1)
因为Printful尚未将其API服务器配置为允许跨源Ajax请求。
请注意,它们为多种不同的语言提供了多个client libraries,但对于客户端JavaScript则没有。
另请注意,在他们链接到的页面中,他们可以说明您的API密钥:
保密API密钥,不要在任何公共网站的客户端代码中公开它。
(请注意,您现在已经在Stackoverflow问题中发布了您的API密钥,它是公开的,将被搜索引擎索引并缓存。您需要让Printful销毁它并立即创建一个新的。)