Traté de fetch la dirección 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, y trató de hacer una petición que devuelve un opaco respuesta:

fetch("http://xyz", {'mode': 'no-cors'})

Ok, ahora funciona… pero no lo puedo leer. =\

¿Cuál es el propósito, entonces, de un opaco respuesta?

3 Comentarios

  1. 139

    Considerar el caso en que un trabajador de servicio actúa como un agnóstico de la caché. Su único objetivo es servir a los mismos recursos que los que se obtendrían de la red, pero más rápido. Por supuesto, usted no puede garantizar que todos los recursos que serán parte de su origen (pensemos en las bibliotecas servido de Cdn, por ejemplo). Como el trabajador de servicio tiene el potencial de alterar la red de respuestas, debe garantizar que no están interesados en el contenido de la respuesta, ni en sus cabeceras, ni siquiera en el resultado. Sólo estás interesado en la respuesta como una caja negra a la que posiblemente sea la memoria caché y servir más rápido.

    Esto es lo que { mode: 'no-cors' } fue hecho para el.

    • Pero el Status code es siempre 0, cómo comprobar si es correcta si status is never 200 ?
    • Usted no puede. Es parte de la caja negra.
  2. 64

    Opaco respuestas no podrán ser accedidos por JavaScript, pero todavía se puede caché de ellos con el La API de caché y responder con ellos en el fetch controlador de eventos en un trabajador de servicio. Así que son útiles para hacer que tu aplicación sin conexión, también por los recursos que usted no puede controlar (por ejemplo, los recursos en un CDN que no establece el CORS encabezados).

  3. 2

    También hay solución para el Nodo JS de la aplicación. CORS en cualquier Lugar es una NodeJS proxy que añade CORS de los encabezados de los proxy solicitud.

    La url del proxy es tomado literalmente de la ruta, validado y proxy. El protocolo parte de la proxy de URI es opcional y su valor predeterminado es «http». Si el puerto 443 está especificado, el protocolo por defecto es «https».

    Este paquete no pone ninguna restricción sobre los métodos http o encabezados, excepto para las cookies. Solicita las credenciales de usuario no está permitida. La aplicación puede ser configurado para requerir un encabezado de proxys una solicitud, por ejemplo, para evitar una visita directa desde el navegador. https://robwu.nl/cors-anywhere.html

Dejar respuesta

Please enter your comment!
Please enter your name here