Распрекрасный Rutube и получение объекта видео через «fetch», почему ошибка?

При переходе по ссылке получения объекта со всеми данными о видео:

https://rutube.ru/api/video/37daa4e656174d04db06c5fca7548751


...объект прекрасно отображается в браузере.

При попытке его получить через «fetch» - пусто.

const url = `https://rutube.ru/api/video/37daa4e656174d04db06c5fca7548751`;
const options = {
  mode: 'no-cors',
  method: 'get'
};

function load (url) {
  return new Promise(async function (resolve, reject) {
    const res = await fetch(url, options)

    console.log('Loaded:', url)

    resolve(res.json())
  })
}

const promise = load(url)

promise.then(console.log)


На выходе:

>>> Uncaught (in promise) 
>>> SyntaxError: Unexpected end of input
  • Вопрос задан
  • 661 просмотр
Решения вопроса 1
@maksam07
Shimpanze,
Какого его не может получить «fetch»?
Через браузер вы обращаетесь от домена эндпоинта, от которого хотите получить информацию.
У рутуба настроена политика CORS. Лучше обратиться к официальной документации, но если не хотите, то пользоваться чем-то подобным:

const proxyUrl = 'https://api.allorigins.win/get?url=';
const targetUrl = 'https://rutube.ru/api/video/37daa4e656174d04db06c5fca7548751';

fetch(proxyUrl + encodeURIComponent(targetUrl))
    .then(response => {
        if (!response.ok) {
            throw new Error('Network response was not ok');
        }
        return response.json();
    })
    .then(data => {
        // данные могут быть внутри data.contents
        console.log('Data retrieved:', JSON.parse(data.contents));
    })
    .catch(error => {
        console.error('There was a problem with the fetch operation:', error);
    });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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