RED Y ASINCRONÍA

fetch: red, CORS y HTTP 404

fetch rechaza ante ciertos fallos de red, pero no rechaza automáticamente por respuestas HTTP 404 o 500.

Si te aparece: Failed to fetch, respuesta 404 o petición que no trae datos

Solución rápida: Gestiona las excepciones de red con try/catch y comprueba response.ok antes de procesar los datos.

Qué está pasando

La URL puede no estar disponible, CORS puede bloquear el acceso o la respuesta puede llegar con un estado HTTP fallido.

Cómo corregirlo

✕ Código problemático
const respuesta = await fetch('/api/producto');
const datos = await respuesta.json(); // Ignora response.ok
✓ Código corregido
async function cargar() {
  try {
    const respuesta = await fetch('/api/producto');
    if (!respuesta.ok) throw new Error('HTTP ' + respuesta.status);
    return await respuesta.json();
  } catch (error) {
    console.error('No se pudo cargar:', error.message);
  }
}

Cómo comprobarlo

Prueba con una URL válida y una ruta 404. El error HTTP se distingue de un fallo de conexión.

Ten en cuenta

Este ejemplo requiere una aplicación con acceso a red: el laboratorio aislado de AprenderJavaScript bloquea las solicitudes externas.