Intenté acceder a fetch
la URL de un sitio web antiguo y ocurrió un error:
Fetch API cannot load http://xyz.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://abc' is therefore not allowed access.
If an opaque response serves your needs, set the request's mode to 'no-cors'
to fetch the resource with CORS disabled.
Entendí el mensaje e intenté hacer una solicitud que devuelve una respuesta opaca:
fetch("http://xyz", {'mode': 'no-cors'})
Ok, ahora funciona ... pero no puedo leerlo. = \
¿Cuál es el propósito, entonces, de una respuesta opaca?
Status code
siempre es0
, ¿cómo verificar si tuvo éxito sistatus is never 200
?JavaScript no puede acceder a las respuestas opacas, pero aún puede almacenarlas en caché con la API de caché y responder con ellas en el
fetch
controlador de eventos en un trabajador de servicio. Por lo tanto, son útiles para desconectar su aplicación, también para recursos que no puede controlar (por ejemplo, recursos en un CDN que no configura los encabezados CORS).fuente
También hay una solución para la aplicación Node JS. CORS Anywhere es un proxy NodeJS que agrega encabezados CORS a la solicitud proxy.
La url para proxy se toma literalmente de la ruta, validada y proxied. La parte del protocolo del URI proxy es opcional y el valor predeterminado es "http". Si se especifica el puerto 443, el protocolo predeterminado es "https".
Este paquete no impone restricciones a los métodos o encabezados http, excepto las cookies. Solicitar credenciales de usuario no está permitido. La aplicación se puede configurar para que requiera un encabezado para enviar una solicitud, por ejemplo, para evitar una visita directa desde el navegador. https://robwu.nl/cors-anywhere.html
fuente
JavaScript es un poco complicado para obtener la respuesta, lo arreglé obteniendo la API del backend y luego llamándola a la interfaz.
fuente