🚫 ¿Por qué un video no reproduce en WebView pero sí en ExoPlayer o VLC? (CORS explicado fácil)



 

Si alguna vez cargaste un video en una app con WebView y no reproduce, pero el mismo enlace funciona en VLC en PC o con ExoPlayer en Android, no es un error del servidor… casi siempre es por CORS.

Hoy te explico exactamente qué está pasando.


🌐 ¿Qué es CORS?

CORS (Cross-Origin Resource Sharing) es una política de seguridad del navegador.

Su función es bloquear solicitudes entre dominios diferentes si el servidor no lo permite explícitamente.

Ejemplo:

Tu WebView carga: https://misitio.com

El video está en: https://otrositio.com/video.m3u8

El navegador pregunta al servidor:

“¿Puedo usar este recurso desde otro dominio?”

Si el servidor NO responde con algo como:

 

 

Access-Control-Allow-Origin: *

 

Entonces el navegador bloquea la reproducción.


📱 ¿Qué pasa en WebView?

WebView funciona como un navegador basado en Chromium.

Eso significa que:

✔ Respeta CORS

✔ Bloquea recursos entre dominios si no hay permisos

✔ Puede fallar al reproducir videos externos

Por eso muchas veces el <video> o los .m3u8 no cargan.


🎬 ¿Por qué en ExoPlayer sí funciona?

Porque ExoPlayer no es un navegador.

No aplica reglas CORS.

Simplemente hace la petición HTTP directa al archivo y lo reproduce si el enlace es válido.

Lo mismo pasa con VLC en PC.


💻 ¿Y VLC?

VLC es un reproductor multimedia nativo.

No aplica políticas de navegador.

Si el enlace responde correctamente, VLC lo reproduce sin preguntar por CORS.


📌 Entonces, ¿qué significa esto?

PlataformaAplica CORSPuede bloquear
Navegador
WebView
ExoPlayerNoNo
VLCNoNo

🔧 ¿Cómo solucionar el problema?

Tienes varias opciones:

1️⃣ Configurar el servidor para permitir CORS

2️⃣ Usar un proxy que agregue los headers

3️⃣ No usar WebView para reproducir video

4️⃣ Usar ExoPlayer directamente en Android


🎯 Conclusión

Si un video no funciona en WebView pero sí en VLC o ExoPlayer, no es magia.

Es simplemente que:

CORS es una restricción del navegador, no del protocolo HTTP.

Si trabajas con apps, IPTV, streaming o WebView, entender esto te evitará muchos dolores de cabeza.

 


Tal vez te interesen estas entradas

No hay comentarios