Ir al contenido principal

CORS no permite el acceso a los datos

¿Por qué el script de edrone ha sido bloqueado por Cross-Origin Resource Sharing (CORS)?

Łukasz Hardek avatar
Escrito por Łukasz Hardek
Actualizado hace más de una semana

Cross-Origin Resource Sharing (CORS) es una función de seguridad implementada por los navegadores web para restringir las solicitudes de páginas web a un dominio distinto al que alojaba la página web. Su función es informar al navegador si el cliente debe acceder a los datos solicitados.

El servidor decide si el cliente es un cliente de confianza y, en función de ello, establece los encabezados adecuados. Gracias a estos encabezados, el navegador sabe si debe compartir los datos con el cliente (pueden ser datos utilizados para sustituir parte de la página que contiene, por ejemplo, un formulario de suscripción).

Cuando te encuentras con un error CORS, significa que la página web está intentando realizar una solicitud XMLHttpRequest, Fetch API u otro tipo de solicitud HTTP de origen cruzado a un dominio distinto al de la página web.

Para solucionar los errores CORS, tienes varias opciones. A continuación te ofrecemos algunas ideas:

1. Configuración del lado del servidor

  • Habilita CORS en el servidor: si controlas el servidor, puedes configurarlo para que incluya los encabezados CORS adecuados en sus respuestas. Por lo general, esto se hace añadiendo encabezados como Access-Control-Allow-Origin, Access-Control-Allow-Methods y Access-Control-Allow-Headers a la respuesta HTTP.

  • Especificar los orígenes permitidos: El servidor se puede configurar para permitir que determinados orígenes accedan a sus recursos. Por ejemplo, se puede establecer Access-Control-Allow-Origin: https://example.com para permitir que solo las solicitudes procedentes de https://example.com accedan a los recursos.

  • Gestión de solicitudes preflight: En algunos casos, los navegadores envían una solicitud OPTIONS preliminar antes de realizar la solicitud real. Debe gestionar esta solicitud OPTIONS y responder con los encabezados CORS adecuados.

2. Servidor proxy

Configura un servidor proxy en tu dominio que reenvíe las solicitudes al dominio externo. De esta manera, el frontend envía solicitudes a su propio dominio, evitando problemas con CORS, ya que las solicitudes ahora son del mismo origen.

3. JSONP (JSON con relleno)

Si estás descargando datos y el servidor admite JSONP, puedes utilizar solicitudes JSONP. JSONP funciona añadiendo dinámicamente una etiqueta de script al documento HTML, y el servidor responde con JSON envuelto en una llamada a la función.

4. Extensiones que omiten CORS

Puedes utilizar extensiones del navegador, como «CORS Everywhere» o «Allow CORS: Access-Control-Allow-Origin», para desactivar temporalmente las restricciones CORS durante la programación o las pruebas.

5. Uso de código del lado del servidor

Si tienes control sobre el servidor, puedes crear código del lado del servidor que actúe como servidor proxy. Tu interfaz envía una solicitud a tu servidor, y tu servidor reenvía la solicitud a un dominio externo y luego devuelve la respuesta a tu interfaz.

6. Conexiones WebSocket

Si trabajas con conexiones WebSocket, es posible que las cuestiones relacionadas con CORS no se apliquen de la misma manera que en el caso de las solicitudes HTTP tradicionales. Las conexiones WebSocket se inician mediante un acuerdo y no tienen las mismas restricciones.

7. Considera soluciones alternativas a CORS

En algunos casos, se pueden considerar alternativas como JSONP, Cross-Origin Embedding (COEP) o Cross-Origin Opener Policy (COOP), dependiendo del caso de uso específico y de la compatibilidad del navegador.

Estas son solo sugerencias de soluciones, usted mismo debe verificar si puede aplicar alguna de ellas.


¿Necesitas más ayuda?

Si tienes más preguntas relacionadas con el bloqueo de scripts de edrone en la página web de la tienda, ponte en contacto con nosotros a través del chat o en hello@edrone.me.


¿Ha quedado contestada tu pregunta?