Iniciar sesión
Empezar

Documentación de Easy Digital Downloads

Documentación, Materiales de Referencia y Tutoriales para Easy Digital Downloads 

Enlaces de descarga no válidos debido a la modificación del orden de las cadenas de consulta

Easy Digital Downloads tiene un sistema robusto para mantener seguros los enlaces de descarga de sus archivos y evitar que se abusen de ellos. Cuando se hace clic en un enlace de descarga de archivo, el orden de los parámetros proporcionados es importante. De vez en cuando, ciertas configuraciones de alojamiento, capas de caché o proveedores de CDN pueden reordenar los parámetros de la cadena de consulta para permitir cierto nivel básico de caché. Reordenar estos elementos hará que Easy Digital Downloads falle la validación del token para el enlace de descarga de un cliente.

¿Cómo puedo saber si este es mi problema?

Si, cuando un usuario hace clic para descargar sus archivos, recibe el error “No tiene permiso para descargar este archivo”, verifique que la URL aún tenga el siguiente formato, prestando mucha atención al orden de los parámetros. 

https://example.org/index.php?eddfile=...&ttl=...&file=...&token=...

Si los parámetros de la cadena de consulta no están en el orden anterior, entonces está experimentando el problema descrito anteriormente. Tenemos algunas soluciones para ayudar a prevenir que esto ocurra.

Si tiene un sistema de caché de páginas configurado, como Cloudflare o Varnish, es posible que aún vea este error aunque sus parámetros parezcan estar en el orden correcto. Esto se debe a que el sistema de caché de páginas ordena esos parámetros antes de enviar su solicitud al servidor web para que sea procesada por PHP.

¿Cómo puedo prevenir este problema?

Cambios en la configuración del alojamiento

La situación ideal es no tener que sus proveedores reordenen los parámetros de la cadena de consulta cuando la solicitud es para una descarga de archivo, evitando que cualquier solicitud que contenga el parámetro de consulta eddfile sea procesada por las reglas de reordenamiento.

Si está utilizando Cloudflare y ha habilitado su función Ordenar cadena de consulta, debería poder deshabilitar esta función para permitir que los usuarios descarguen sus archivos sin errores.

Fragmento de código personalizado

Reconocemos que esto no siempre es posible con algunos proveedores, por lo que hemos escrito una pequeña función que ejecutará cualquier validación fallida una segunda vez, para verificar que recibimos los elementos en el orden adecuado.

function ck_custom_validate_url_token( $ret, $url, $query_args ) {
	// If basic validation failed, let's make sure the URL prarms were in the right order and try again
	if ( false === $ret ) {
		$parts   = parse_url( $url );
		wp_parse_str( $parts['query'], $query_args );

		$fix_arg_order = array(
			'eddfile' => $query_args['eddfile'],
			'ttl'     => $query_args['ttl'],
			'file'    => $query_args['file'],
			'token'   => $query_args['token'],
		);

		$fixed_url   = add_query_arg( $fix_arg_order, site_url() );
		$fixed_token = edd_get_download_token( $fixed_url );

		$ret         = $query_args['token'] === $fixed_token;
	}

	return $ret;
}
add_filter( 'edd_validate_url_token', 'ck_custom_validate_url_token', 10, 3 );

La función anterior debe probarse en un entorno de ensayo antes de usarla en un entorno de producción, para verificar que funciona correctamente en su configuración específica.

¿Fue útil este artículo?

¡Empieza a vender hoy mismo!

Únete a más de 50.000 dueños de tiendas inteligentes y empieza a usar la forma más fácil de vender productos digitales con WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]