@SergeyT89

Fetch запрос возвращает пустой результат?

Fetch запрос возвращает пустой результат, а в браузере страница открывается . В консоли ошибок нет , помогите пожалуйста.

fetch("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml", {
		method: "GET",
		headers: {
			'Access-Control-Allow-Origin':'*',
			'Content-Type': 'text/xml; charset=utf-8'
		},
		mode: 'no-cors'
	})
        .then((response) => {
        	return response.text()
        })
        .then((str) => {
        	return(new window.DOMParser()).parseFromString(str, "text/xml")
        })
        .then((data) => {
        	console.log(data)
        })
  • Вопрос задан
  • 679 просмотров
Решения вопроса 1
chakaponi
@chakaponi
Если сторонний ресурс подконтролен вам -- выставить CORS
Если не подконтролен, но то, что выделаете будет использовано только вами, то различные брузерные расширения которые автоматически проставляют необходимый CORS во всех запросах
Если не подконтролен, а ваш сервис ориентирован не только на вас, то только парсинг содержимого на сервере и получение его со своего бэкенда

Не забудьте пометить ответ как решение
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@GrayHorse
'Access-Control-Allow-Origin':'*'
Этот заголовок должен возвращать сервер. Здесь он бесполезен.

mode: 'no-cors'
Это не выключает CORS.

Fetch запрос возвращает пустой результат

Неправда. Возращается Response c type: "opaque".
Ответ написан
@AleksRap
Проблема в поле mode: 'no-cors'

Вот так будет работать. Самовызывающуюся функцию можно убрать, она только для async await

(async function() {
  const response = await fetch("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
  const text = await response.text();
  const parse = (new window.DOMParser()).parseFromString(text, "text/xml");
  console.log(parse);
})();


так же можно через промисы как у вас
fetch("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml", {
  method: "GET",
  headers: {
    'Content-Type': 'text/xml; charset=utf-8'
  }
})
  .then((response) => {
    return response.text()
  })
  .then((str) => {
    return(new window.DOMParser()).parseFromString(str, "text/xml")
  })
  .then((data) => {
    console.log(data)
  })
Ответ написан
@SergeyT89 Автор вопроса
К сожалению это не рабочий вариант, есть еще какие ни-будь варианты?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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