Quando a proteção contra hotlinking está ativada em um domínio CDN, as solicitações que não passam na validação do cabeçalho Referer recebem o código de status 403. Este tópico descreve como diagnosticar e resolver erros 403 causados por configurações incorretas da proteção contra hotlinking.
Sintoma
Após configurar a proteção contra hotlinking em um domínio acelerado pelo CDN, o acesso aos recursos pelo domínio retorna um erro 403. O cabeçalho de resposta X-Tengine-Error contém o valor denied by Referer ACL.
Causa
A proteção contra hotlinking funciona verificando o cabeçalho Referer das solicitações recebidas em relação à lista de permissões ou lista de bloqueios configurada no domínio CDN. Um erro 403 ocorre quando o cabeçalho Referer não corresponde às regras configuradas. Isso geralmente acontece em um dos seguintes cenários:
Incompatibilidade do Referer: a solicitação contém um cabeçalho
Referer, mas o domínio de referência não está incluído na lista de permissões da proteção contra hotlinking.Referer vazio bloqueado: a solicitação não contém um cabeçalho
Referer(por exemplo, quando você acessa uma URL diretamente pela barra de endereços do navegador), e a configuração da proteção contra hotlinking não permite valores de Referer vazios.
Solução
Primeiro, identifique se o erro 403 é causado por uma incompatibilidade do Referer ou pelo bloqueio de Referer vazio. Em seguida, aplique a correção correspondente.
Etapa 1: Identificar a causa
Testar com um cabeçalho Referer: execute o seguinte comando curl. Substitua
demo.aliyundoc.compelo domínio de referência real eexample.aliyundoc.compelo domínio acelerado pelo CDN.curl -voa -e "http://demo.aliyundoc.com" http://example.aliyundoc.comSe a resposta retornar um erro 403 e o cabeçalho
X-Tengine-Errorexibirdenied by Referer ACL, o domínio do Referer não está na lista de permissões da proteção contra hotlinking. Consulte a correção na seção Corrigir uma incompatibilidade do Referer.
Testar sem um cabeçalho Referer: execute o seguinte comando curl sem a flag
-e.curl -voa http://example.aliyundoc.comSe a resposta retornar um erro 403 e o cabeçalho
X-Tengine-Errorexibirdenied by Referer ACL, a configuração da proteção contra hotlinking não permite solicitações com Referer vazio. Consulte a correção na seção Corrigir Referer vazio bloqueado.
Testar no navegador: abra a URL acelerada pelo CDN diretamente na barra de endereços do navegador e abra o DevTools (F12). Verifique a aba Network. Se a solicitação não incluir um cabeçalho
Referere a resposta for 403, a configuração da proteção contra hotlinking não permite valores de Referer vazios.
Etapa 2a: Corrigir uma incompatibilidade do Referer
Se o erro 403 ocorrer porque o domínio do Referer não corresponde à lista de permissões, adicione o domínio de referência à lista de permissões da proteção contra hotlinking:
Faça login no Alibaba Cloud CDN console.
No painel de navegação à esquerda, escolha Domain Names.
Encontre o domínio de destino e clique em Manage.
Escolha Access Control > Referer Black/Whitelist > Modify.
Verifique se Whitelist está selecionada. Adicione o domínio de referência (por exemplo,
demo.aliyundoc.com) à lista de permissões e clique em OK.
Etapa 2b: Corrigir Referer vazio bloqueado
Se o erro 403 ocorrer porque as solicitações sem cabeçalho Referer estão bloqueadas, permita o acesso com Referer vazio:
Faça login no Alibaba Cloud CDN console.
No painel de navegação à esquerda, escolha Domain Names.
Encontre o domínio de destino e clique em Manage.
Escolha Access Control > Referer Black/Whitelist > Modify.
Selecione Allow resource URL access from browsers e clique em OK.
Nota: permitir acesso com Referer vazio significa que qualquer pessoa que inserir a URL do recurso diretamente no navegador pode acessar o recurso. Isso pode reduzir a eficácia da proteção contra hotlinking. Ative esta opção somente quando necessário.