Ir para o conteúdo

Como soluciono problemas de regravação de URI quando uso o CloudFront Functions?

3 minuto de leitura
0

Eu tentei usar o Amazon CloudFront Functions para regravar ou alterar o caminho do URI das solicitações recebidas, mas estou tendo problemas com a regravação do URI.

Resolução

Você não associou a CloudFront Function ao comportamento de cache correto

Verifique se você associou a CloudFront Function às configurações corretas de comportamento de cache e do padrão de caminho para as solicitações que você deseja modificar. Se vários comportamentos de cache corresponderem às mesmas solicitações, o CloudFront usa aquele com a maior precedência.

Conclua as etapas a seguir:

  1. Abra o console do CloudFront.
  2. No painel de navegação, selecione Distribuições e selecione sua distribuição.
  3. Clique na guia Comportamentos e, em seguida, revise o padrão de caminho para cada comportamento.

O caminho do URI não corresponde após a execução da CloudFront Function

Verifique seus Logs do CloudFront Functions em busca de erros “URI path mismatch”. Se você recebeu esse erro, o caminho do URI regravado não corresponde ao formato esperado após a execução da função.

Revise o código da CloudFront Function para garantir que ele altere corretamente o caminho do URI. O caminho do URI não pode conter caracteres incorretos e deve incluir uma barra inicial (/).

Exemplo de caminho de URI:

/analytics.js/v1/xT5Qstsd35FL5WgikA1ABwyCQUDDYPHx/analytics.min.js';

Para mais informações, consulte Visualizar métricas do CloudFront e de funções de borda.

O certificado SSL não corresponde à origem e ao domínio solicitado

Um problema ocorre quando a CloudFront Function regrava o valor do cabeçalho do host e não corresponde mais ao domínio do certificado SSL. Em seguida, a CloudFront Function encaminha a solicitação para um domínio diferente do domínio que está no certificado SSL.

Para solucionar esse problema, modifique a CloudFront Function para regravar o valor do cabeçalho do host para corresponder ao domínio do certificado SSL da origem.

Por exemplo, se o certificado SSL da origem usar exemplo.com, mas o domínio solicitado for www.exemplo.com, adicione o seguinte código à CloudFront Function:

request.headers['host'] = ['example.com'];

O cabeçalho do host agora é regravado para exemplo.com antes de encaminhar a solicitação para a origem.

O URI está incorreto nas implantações do SPA

Se você implantou uma aplicação de página única (SPA) por meio do CloudFront, verifique os requisitos para regravar solicitações para servir o arquivo index.html, exceto para ativos estáticos. Por exemplo, as solicitações não verificam ativos estáticos, como arquivos JavaScript ou CSS.

Use o código a seguir na CloudFront Function para verificar se há uma extensão de arquivo ou uma barra final no URI:

function handler(event) {
    var request = event.request;
    var uri = request.uri;

    // Check whether the URI is missing a file name or a file extension.
    if (uri.endsWith('/') || !uri.includes('.')) {
        request.uri = '/index.html';
    }

    return request;
}

Se a solicitação for do SPA, ela regrava o URI em /index.html. Se a solicitação não for do SPA, o URI não será alterado e permitirá que as solicitações de ativos estáticos passem sem modificações.

A barra está ausente do URI quando você altera um URL

Se você usar uma CloudFront Function para encurtar ou alterar URLs, adicione uma barra no início do URI para aceitar a solicitação de URL.

Exemplo de CloudFront Function para encurtar o URL:

request.uri = '/' + newShortUrl;
return request;

Informações relacionadas

Redirecionar para um novo URL em um evento de solicitação do visualizador do CloudFront Functions

Reescrever um URI de solicitação com base na configuração do KeyValueStore para um evento de solicitação do visualizador do CloudFront Functions

AWS OFICIALAtualizada há 3 meses