Получить API -> Непойманный (в обещании) TypeError: Не удалось получить - PullRequest
0 голосов
/ 06 августа 2020

У меня проблема с получением данных api .. Этот api -> https://resmush.it/api

Мой запрос работает на Postman , но не на моем у меня есть эта ошибка:

Uncaught (в обещании) TypeError: Не удалось получить

Мой код:

const params = {
    method: 'GET',
    mode: 'no-cors',
    headers: {
        'Access-Control-Allow-Origin': '*',
        'Content-Type': 'application/json'
    }
};

fetch('http://api.resmush.it/ws.php?img=https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Google_Images_2015_logo.svg/1200px-Google_Images_2015_logo.svg.png&qlty=50', params)
    .then(reponseBis => reponseBis.json())
    .then(dataBis => console.log(dataBis));

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Для теста я поместил только хорошую часть кода:

const params = {
    method: 'GET',
    headers: {
        'accept': 'application/json'
    }
};

fetch('http://api.resmush.it/ws.php?img=https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Google_Images_2015_logo.svg/1200px-Google_Images_2015_logo.svg.png&qlty=50', params)
    .then(responseBis => responseBis.json())
    .then(json => console.log(json))
    .catch(e => console.error(e.message));

И у меня такая ошибка: Mixed Content: The page at 'https://www.mywebsite.com/page.php' was loaded over HTTPS, but requested an insecure resource 'http://api.resmush.it/ws.php?img=https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Google_Images_2015_logo.svg/1200px-Google_Images_2015_logo.svg.png&qlty=50'. This request has been blocked; the content must be served over HTTPS.

Failed to fetch
(anonymous) @ galerie.js:11
Promise.catch (async)
(anonymous) @ galerie.js:11
0 голосов
/ 06 августа 2020

РЕДАКТИРОВАТЬ Кажется, этот заголовок <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> вызывает проблемы. Код должен работать, если вы удалите его

Этот метатег обновит HTTP до HTTPS, однако API, который вы используете, не обслуживает HTTPS

Из документов:

Обратите внимание, что, если запрошенный ресурс фактически недоступен через HTTPS, запрос не будет выполнен без возврата к HTTP.

-------

Mixed Content: The page at 'https://www.mywebsite.com/page.php' was loaded over HTTPS, but requested an insecure resource 'http://api.resmush.it/ws.php?img=https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Google_Images_2015_logo.svg/1200px-Google_Images_2015_logo.svg.png&qlty=50'. This request has been blocked; the content must be served over HTTPS.

Проблема в том, что эта ссылка https://upload.wikimedia.org - HTTPS, а http://api.resmush.it это HTTP. Измените URL-адрес resmu sh на https:// или измените ссылку викимедиа на http://

---------

Посмотрите at Заголовки HTTP

Использование no-cors можно использовать только для POST-данных в API, не разрешая cors. Но это вернет пустой ответ. API, который вы предоставили, позволяет использовать cors, поэтому в этом нет необходимости.

Заголовок Content-Type должен быть Accept

const params = {
    method: 'GET',
    headers: {
        'accept': 'application/json'
    }
};

fetch('http://api.resmush.it/ws.php?img=https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Google_Images_2015_logo.svg/1200px-Google_Images_2015_logo.svg.png&qlty=50', params)
.then(response => response.json())
.then(json => console.log(json))
.catch(e => console.error(e));
{
  "src": "https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Google_Images_2015_logo.svg/1200px-Google_Images_2015_logo.svg.png",
  "dest": "http://par3.static.resmush.it/a95239e7e37bade3af9ca3b7eabb8f11/1200px-Google_Images_2015_logo.svg.png",
  "src_size": 48597,
  "dest_size": 19545,
  "percent": 60,
  "output": "json",
  "expires": "Thu, 06 Aug 2020 09:52:12 +0200",
  "generator": "reSmush.it rev.2.0.6.20200328"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...