Vídeo y subtítulos · Descargador directo de medios
Por qué CORS puede bloquear una descarga directa en el navegador y qué significa
· Cómo funciona
cors http descargas
Un descargador solo para navegador se encuentra dentro de la política del mismo origen. Esta publicación explica qué es CORS, por qué algunos hosts permiten la recuperación y otros no, y por qué una herramienta sin un servidor de retransmisión no puede solucionarlo.
El enlace funciona en una pestaña nueva pero falla en la herramienta: el rompecabezas que un error CORS crea para los usuarios
Un archivo adjunto de podcast puede reproducirse cuando se ingresa en la barra de direcciones pero falla cuando una página intenta leerlo con Fetch. La navegación y la lectura de guiones son poderes diferentes del navegador. El primero muestra un recurso; el segundo podría exponer sus bytes a código que se ejecuta en otro origen.
Direct Media Downloader necesita la segunda potencia porque lee fragmentos de respuesta, informa el progreso, crea un Blob y ofrece un guardado con nombre. Cuando el host de medios no ha optado por esa lectura de origen cruzado, el navegador impide que JavaScript reciba la respuesta aunque la navegación normal aún pueda funcionar. La misma distinción explica por qué copiar la dirección en otra aplicación puede producir un resultado diferente sin que ninguna de las aplicaciones haya cambiado el archivo remoto.
La política del mismo origen en un párrafo: por qué una página en toolacre.com no puede leer libremente bytes servidos desde otro origen
Un origen combina esquema, nombre de host y puerto. Por lo tanto, una página proporcionada desde ToolAcre y un archivo proporcionado desde una CDN de editor suelen tener orígenes diferentes. La política del mismo origen impide que el script de un origen lea libremente las respuestas de otro origen, protegiendo los datos expuestos a través del acceso ambiental del navegador.
Esta restricción la aplica el navegador, no una advertencia inventada en el programa de descarga. Se aplica antes de que el código de la aplicación pueda inspeccionar encabezados o fragmentos de cuerpo protegidos. Es posible que el host de origen aún reciba una solicitud, por lo que una lectura bloqueada nunca debe describirse como "no se contactó con nadie". Los límites de origen se aplican a las respuestas legibles, no simplemente a las extensiones de archivos, por lo que un sufijo `.mp3` aparentemente obvio no otorga una exención especial a los scripts de página.
Qué hace Access-Control-Allow-Origin: cómo el host del archivo, no la herramienta, decide si el navegador puede entregar los bytes
El servidor remoto puede participar devolviendo un encabezado `Access-Control-Allow-Origin` apropiado. Esa decisión pertenece a la configuración del host del archivo. ToolAcre no puede agregar el encabezado a la respuesta de otra persona y una opción de solicitud no puede otorgar el permiso que el servidor receptor retuvo.
Un encabezado permisivo permite al navegador exponer la respuesta a la página; no certifica derechos de autor, seguridad o calidad de los medios. Del mismo modo, la falta de un encabezado no prueba que la URL esté rota. Solo significa que este script de origen cruzado carece de permiso para leer lo que devolvió el servidor. Los administradores de host deben probar el origen exacto de la solicitud y los métodos que pretenden admitir, en lugar de agregar encabezados permisivos a ciegas a un espacio de nombres de almacenamiento completo.
Lecturas de origen cruzado bloqueadas y por qué el script no recibe una respuesta que se pueda guardar
El descargador utiliza Fetch en modo CORS normal en lugar de `no-cors`. En una lectura de origen cruzado rechazada, Fetch rechaza y el código de la aplicación no recibe encabezados ni cuerpo utilizables. La herramienta informa la categoría `CORS_OR_NETWORK` combinada porque los navegadores intencionalmente no revelan suficientes detalles para distinguir CORS de cada falla de transporte.
Las respuestas opacas pertenecen a solicitudes `no-cors` explícitas, pero ese modo no resolvería este trabajo: JavaScript no puede inspeccionar un cuerpo opaco y convertirlo en el Blob deseado. Por lo tanto, la implementación falla honestamente en lugar de adquirir una respuesta ilegible y pretender que puede salvarla. Debido a que la aplicación nunca obtiene esos bytes ocultos, no puede calcular verdaderamente el progreso, inferir un nombre de archivo a partir de encabezados protegidos ni crear una URL de objeto útil a partir de ellos.
Ejemplo resuelto: leer la solicitud fallida en el panel de red: detectar el encabezado que falta y confirmar que no se contactó con ningún servidor de retransmisión
Abra el panel Red, conserve el registro y presione Comprobar enlace una vez. La fila HEAD intentada identifica el destino y puede mostrar el diagnóstico CORS del navegador. Inspeccione los encabezados de respuesta si están disponibles; La ausencia de un encabezado de permiso explica por qué el código de la página no recibió el tamaño anunciado o el tipo MIME.
Una verificación fallida ya es evidencia de que se intentó una solicitud real. No hay ninguna fila de la API de ToolAcre que contenga la URL pegada ni ninguna segunda solicitud de retransmisión. Si el host no permite HEAD correctamente, la descarga aún puede comportarse de manera diferente porque usa GET, pero ninguna de las rutas cambia silenciosamente la arquitectura. La redacción de la consola varía entre los navegadores, así que conserve la fila fallida y la evidencia del encabezado en lugar de depender de la redacción de un proveedor para un informe operativo.
Por qué la herramienta no lo evita: un proxy significaría enviar su enlace a un servidor, que es exactamente lo que la herramienta promete no hacer
Un proxy podría recuperar el archivo del lado del servidor y devolverlo desde un punto final del mismo origen, evitando la lectura entre orígenes del navegador. También revelaría el enlace y cada byte retransmitido a ese operador, incurriría en ancho de banda y crearía una superficie de búsqueda arbitraria. ToolAcre deliberadamente no tiene tal punto final.
El recurso alternativo sugerido por la interfaz es el vínculo nativo Guardar como acción del navegador, cuando esté disponible. Se trata de navegación o manejo de descargas en lugar de lectura de scripts de páginas. La sugerencia no debilita la política del host, no autentica a un visitante ni convierte una transmisión protegida en un archivo directo. Ese rechazo arquitectónico también evita que ToolAcre acumule copias, registros de acceso o privilegios de recuperación saliente únicamente para convertir una denegación del navegador en un éxito aparente.
Lo que esto no cubre: CORS no es lo mismo que 403, un muro de inicio de sesión o una URL firmada vencida
La falla de CORS no es un HTTP 403, aunque cualquiera de los dos puede detener el flujo de trabajo. Un 403 es un estado de respuesta que eligió el anfitrión; una firma caducada puede provocarla. Un muro de inicio de sesión necesita credenciales que esta herramienta omite. La interrupción de la red, la falla del DNS y los problemas con los certificados pueden compartir el rechazo genérico de Fetch del navegador.
Por lo tanto, el diagnóstico debe utilizar los paneles Red y Consola juntos en lugar de tratar cada falla como un encabezado faltante. ToolAcre informa estados HTTP conocidos cuando llega una respuesta legible, pero se niega a adivinar cuando el navegador proporciona solo una excepción en forma de transporte. Mantener estas categorías separadas dirige la solución correctamente: configurar CORS para un objeto público autorizado, actualizar un enlace caducado, iniciar sesión a través del proveedor o arreglar la conectividad.
Conclusión: CORS es una decisión del lado del host: cómo Direct Media Downloader lo informa honestamente en lugar de recurrir silenciosamente a un servidor
CORS se controla en el host de medios. Un programa de descarga exclusivo para navegador puede obedecer esa elección, explicarla y detenerse; no puede anular la elección del código del cliente. Este límite es inconveniente precisamente porque evita que páginas arbitrarias se conviertan en lectores universales entre sitios.
Utilice un control de descarga proporcionado por el host, solicite un archivo autorizado habilitado para CORS o utilice el enlace Guardar nativo cuando corresponda. Direct Media Downloader cumple su promesa exponiendo el rechazo y preservando una ruta directa del navegador al host, no ocultando un servidor detrás de un botón más exitoso. Por lo tanto, un resultado exitoso debe provenir de un host cooperativo o de un navegador legítimo diferente, nunca de suprimir el texto de error manteniendo la misma lectura denegada.