Entrar
Começar

Documentação do Easy Digital Downloads

Documentação, Materiais de Referência e Tutoriais para Easy Digital Downloads 

Links de download inválidos devido à modificação da ordem da string de consulta

O Easy Digital Downloads possui um sistema robusto para manter os links de download de seus arquivos seguros e evitar que sejam mal utilizados. Quando um link de download de arquivo é clicado, a ordem dos parâmetros fornecidos é importante. De tempos em tempos, certas configurações de hospedagem, camadas de cache ou provedores de CDN podem reordenar os parâmetros da string de consulta para permitir algum cache de nível básico. Reordenar esses itens fará com que o Easy Digital Downloads falhe na validação do token para o link de download de um cliente.

Como posso saber se este é o meu problema?

Se, quando um usuário clica para baixar seus arquivos, ele recebe o erro “Você não tem permissão para baixar este arquivo”, verifique se o URL ainda tem o seguinte formato, prestando muita atenção à ordem dos parâmetros. 

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

Se os parâmetros da string de consulta não estiverem na ordem acima, então você está experimentando o problema descrito acima. Temos algumas soluções para ajudar a evitar que isso ocorra.

Se você configurou um sistema de cache de página, como Cloudflare ou Varnish, ainda poderá ver este erro, mesmo que seus parâmetros pareçam estar na ordem correta. Isso ocorre porque o sistema de cache de página classifica esses parâmetros antes de enviar sua solicitação ao servidor web para ser processada pelo PHP.

Como posso evitar este problema?

Alterações na configuração de hospedagem

A situação ideal é não ter seus provedores reordenando os parâmetros da string de consulta quando a solicitação é para um download de arquivo, impedindo que qualquer solicitação contendo o parâmetro de consulta eddfile seja passada pelas regras de reordenação.

Se você estiver usando o Cloudflare e ativou o recurso Classificação de String de Consulta, deverá ser capaz de desativar esse recurso para permitir que os usuários baixem seus arquivos sem erros.

Trecho de código personalizado

Reconhecemos que isso nem sempre pode ser possível com alguns provedores, por isso escrevemos uma pequena função que executará qualquer validação falha uma segunda vez, para verificar se recebemos os itens na ordem correta.

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 );

A função acima deve ser testada em um ambiente de staging antes de ser usada em um ambiente de produção, para verificar se funciona corretamente em sua configuração específica.

Este artigo foi útil?

Comece a vender hoje mesmo!

Junte-se a mais de 50.000 proprietários de lojas inteligentes e comece a usar a maneira mais fácil de vender produtos digitais com o WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]