Estoy haciendo un PoC que involucra videoJS. Para ver cómo funciona, configuré un AWS S3 Bucket y cargué un video y configuré su ACL para lectura pública. Luego establecí su URL en el src de la etiqueta de video y lo conecté usando VideoJS de su guía de inicio.
Todo eso funcionó. El reproductor de video aparece en la pantalla y puedo verlo sin problemas.
Lo que no entiendo es cómo VideoJS maneja su solicitud inicial (que supongo que es una solicitud de metadatos).
La primera solicitud es un GET a mi URL de S3 que contiene el siguiente encabezado:
Range: bytes=0-Luego, la respuesta devuelve los siguientes encabezados relevantes:
Accept-Ranges: bytes Content-Length: 195936293 Content-Range: bytes 0-195936292/195936293 Content-Type: video/quicktime ETag: "%S3ETagOfObject%"Esto realmente parece que me está solicitando el archivo completo. Parece que la respuesta está devolviendo que el servidor acepta solicitudes de rango y proporciona metadatos relevantes del archivo, y solo puedo suponer que está transmitiendo los datos desde el servidor como si se hubiera solicitado todo el archivo.
Lo que no entiendo es que, según la pestaña de red, la solicitud se completa en 329 ms y solo devuelve 19,5 kB de datos. Si ejecuto exactamente la misma solicitud en Postman, finalmente se agota después de unos 15 segundos y advierte "Error: se alcanzó el tamaño máximo de respuesta"
Lo único que tiene sentido para mí aquí es que VideoJS (o el navegador en sí) solicita el archivo completo, pero luego cancela la solicitud tan pronto como recibe suficientes metadatos para comenzar a transmitir. ¿Recupera el 206 CONTENIDO PARCIAL con ETag, Content-Type y Content-Length de todo el archivo y luego corta el cebo? Habría asumido que podría ver eso en la pestaña de red, pero solo muestra Estado = 206.
¿Alguien puede arrojar alguna luz sobre cómo funciona y por qué veo la diferencia entre Postman y el navegador?
¡Gracias!