paulenot
@paulenot
IT Issue

Почему fetch не возвращает json?

Когда я вызываю функцию localhost() в devtools видно, что возвращается от сервера json, но условие response.ok не выполняется. В консоль выводит OK: false и STATUS: 0. Почему так происходит и как мне получить json? Это условие скопировано с сайта javascript.ru.
async function localhost(request){
	var request = "http://localhost/"+request;
	let response = await fetch(request, { mode: "no-cors" });
	if (response.ok) {
		let json = await response.json();
		console.log(response);
	} else {
		console.log("OK: " + response.ok);
		console.log("STATUS: " + response.status);
	}
}
  • Вопрос задан
  • 593 просмотра
Пригласить эксперта
Ответы на вопрос 2
@zkrvndm
Софт для автоматизации
У вас наверняка в консоли есть красные надписи - загуглите их и все станет ясно.
Ответ написан
@GrayHorse
HTTP сервер не возвращает заголовок status / Status line.

И условие response.ok не срабатывает, т.к.
response.status.toString().startsWith("2") === false


---

UPD.
Ах да:

{mode: "no-cors"}
Классика.
Гениально.
Удоли.
Что-то мне подсказывает, что запрос кросс-ориджиновский.

---

Это условие скопировано с сайта javascript.ru.

Только вот там и пример внезапно рабочий:
let response = await fetch(url);

if (response.ok) { // если HTTP-статус в диапазоне 200-299
  // получаем тело ответа (см. про этот метод ниже)
  let json = await response.json();
} else {
  alert("Ошибка HTTP: " + response.status);
}
Ответ написан
Ваш ответ на вопрос

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

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