iQuasar
@iQuasar

Как с fetch credentials избежать ошибки CORS?

Я пытаюсь с помощью fetch получить json с внешнего ресурса. fetch без параметров возвращает json без нужного массива данных(он оказывается скрытый). Я устанавливаю свойство credentials: 'include', на что закономерно получаю ошибку CORS (The value of the 'Access-Control-Allow-Credentials' header in the response is '' which must be 'true' when the request's credentials mode is 'include').
Соответственно надо добавить свойство Access-Control-Allow-Credentials в заголовок response. Сделать это можно только в бекэнде, насколько я понял, я добавляю к create-react-app бэкенд на express. Добавил туда
var cors = require('cors');
app.use(cors());

Но все равно ничего не работает. Что я только не пытался. Настраивал proxy в node, делал fetch в бекэнд части, не работает.
const url = 'https://www.instagram.com/graphql/query/?query_id=17851374694183129&variables={"id":"500818047","first":10}';
const api_url = await fetch(url, {
   credentials: 'include'
});
const data = await api_url.json();
console.log(data);

Подскажите решение, может можно все проще сделать или я что то делаю не так

p.s. в jsone скрыт массив edges
  • Вопрос задан
  • 844 просмотра
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
если речь об инстаграмме, то там вроде был вариант вернуть jsonp с которым проблем быть не должно.
Ответ написан
Комментировать
@Kerridan
Нужно задавать правильные заголовки в ответе сервера для того, чтобы кросс-доменные запросы работали и мы имели доступ к контенту, который присылает сервер. Вот выжимка заголовков:

// Нет авторизации
Access-Control-Allow-Origin: *
// Нужна авторизация, помним, что обязателен https на сервере и клиенте
Access-Control-Allow-Origin: https://example.ru
Access-Control-Allow-Credentials: true
// Нужен доступ к заголовкам ответа
Access-Control-Expose-Headers: *
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы