Почему мой запрос на доступ к API Printful запрещен? - PullRequest
0 голосов
/ 14 мая 2018

Итак, я пытаюсь позвонить в Printful API.Прежде всего, я следовал разделу «Как начать» со страницы документации .Под опцией «Магазины» я установил URL-адрес, указывающий на мой веб-сайт, после чего я выбрал опцию «API» и сгенерировал свой ключ API.То, как я сделал запрос, основано на разделе «Авторизация», также из документации.Насколько я понимаю, единственное, что мне нужно сделать, это отправить заголовок авторизации с ключом API, закодированным с использованием base64, и убедиться, что он работает.

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';
    }
  }
});

Что происходит при запуске этого кода, так этовнутренний HTML-код элемента p становится ошибкой, и я получаю эту ошибку в консоли:

Error

Я пытался исключитьЗаголовки, чтобы увидеть, что произойдет: я получаю похожую ошибку, за исключением того, что нет части о проверке перед полетом:

Error(No Headers)

Если я отправлюзапрос прямо на https://api.printful.com'(doesn't имеет смысл отправлять запросы сюда;это было просто посмотреть, что я получу), что я получаю:

No endpoint

Я также отправил несколько писем в службу поддержки Printful черезчетыре дня, но я ничего о них не слышал.

Информация об API в Интернете очень скудна.Я буквально нашел только одного человека, задающего вопрос об этом.Там нет ни учебников, ни примеров кода.

Я также немного исследовал обмен ресурсами между источниками, надеясь, что Access-Control-Allow-Origin можно установить на стороне клиента (опять же, не имеет смысла, просто выстрел в темноте).

Спасибо за любую помощь и / или советы заранее.

1 Ответ

0 голосов
/ 14 мая 2018

Поскольку Printful не настроили свой сервер API для разрешения запросов Ajax между источниками.

Обратите внимание, что они предоставляют несколько клиентских библиотек для нескольких разных языков, но не для клиентского JavaScript.

Обратите также внимание, что на странице, на которую они ссылаются,у них есть то, что можно сказать о вашем ключе API:

Храните ключ API в секрете и никогда не открывайте его в коде клиента на общедоступном веб-сайте.

(Примечаниечто вы сейчас разместили свой ключ API в вопросе Stackoverflow, где он является общедоступным, будет проиндексирован поисковыми системами и кэширован. Вам нужно получить Printful, чтобы уничтожить его и создать новый сейчас.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...