Я знаю, что на SO мы обращались лот раз, но все ответы в основном в духе "добавить определенный заголовок на сервер".В этом случае API (Shopify) отлично работает и легко доступен через curl.
Я пробовал это как с библиотекой Axios, так и с Fetch API.
- Я пробовал каждое значение для
referrer
, mode
и referrerPolicy
в параметрах выборки. - Я подтвердил, что мои учетные данные BasicAuth верны.
- Я пробовал в нескольких браузерах.
- Я пробовал как с localhost, localhost.com (установите значение в моем / etc / hosts), так и с сервера с реальным доменным именем.
Я не могу понять, почему это прекрасно работает в cURL, но не в fetch ().
Вот сокращенная версия моего кода:
const apiKey = 'mykey';
const apiPassword = 'mypass';
const apibase = 'https://my-shop-domain.myshopify.com/admin/';
const endpoint = 'locations.json';
var headers = new Headers({
"Authorization": "Basic " + btoa( apiKey + ':' + apiPassword ),
});
fetch( apibase + endpoint {
method: 'GET',
headers: headers,
mode: 'no-cors',
// cache: "no-store",
// referrer: "client",
// referrerPolicy: "origin",
// credentials: 'include'
}).then( resp => resp.json().then( resp => {
console.log( resp );
})).catch( err => {
console.error(err);
});
и возвращается ошибка
Доступ к выборке в 'https://my -shop-domain.myshopify.com/admin/locations.json 'from origin' https://localhost:8080' заблокирован политикой CORS: Ответ на предполётный запрос не проходит проверку контроля доступа: Нет 'Access-ControlЗаголовок -Allow-Origin 'присутствует на запрашиваемом ресурсе.Если непрозрачный ответ отвечает вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.
Если Shopify не включает Access-Control-Allow-Origin header, почему запрос отлично работает с cURL?Существуют библиотеки узлов и библиотеки Ruby для доступа к API-интерфейсу Shopify, поэтому трудно поверить, что они просто вообще не разрешают доступ из javascript.
Итак, я думаю, мой вопрос: что я могу сделать, чтобы получить доступ к этому API с помощью JavaScript?