首页 > 解决方案 > 为什么我对 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 是我可以在客户端设置的东西(同样,没有意义;只是在黑暗中拍摄)。

感谢您提前提供任何帮助和/或见解。

标签: javascriptajaxcors

解决方案


因为 Printful 没有配置他们的 API 服务器来允许跨域 Ajax 请求。

请注意,它们为几种不同的语言提供了许多客户端库,但不针对客户端 JavaScript。

另请注意,在他们链接到的页面中,他们对您的 API 密钥有这样的说法:

将 API 密钥保密,切勿在任何公共网站的客户端代码中公开它。

(请注意,您现在已经在 Stackoverflow 问题中发布了您的 API 密钥,它是公开的,将被搜索引擎索引并缓存。您需要获取 Printful 来销毁它并立即创建一个新的。)


推荐阅读