Salta al contenuto

Come posso risolvere i problemi di riscrittura degli URI quando utilizzo Funzioni CloudFront?

3 minuti di lettura
0

Ho provato a utilizzare Funzioni Amazon CloudFront per riscrivere o modificare il percorso URI delle richieste in arrivo, ma ho riscontrato problemi con le riscritture degli URI.

Risoluzione

Non hai associato la funzione CloudFront al comportamento della cache corretto

Verifica di aver associato la funzione CloudFront al comportamento della cache e alle impostazioni del modello di percorso corrette per le richieste che desideri modificare. Se più comportamenti della cache corrispondono alle stesse richieste, CloudFront utilizza quello con la precedenza più alta.

Completa i seguenti passaggi:

  1. Apri la console CloudFront.
  2. Nel pannello di navigazione, scegli Distributions (Distribuzioni), quindi seleziona la distribuzione.
  3. Scegli la scheda Behaviors (Comportamenti), quindi esamina il modello di percorso per ogni comportamento.

Il percorso URI non corrisponde dopo l'esecuzione della funzione CloudFront

Controlla i log di Funzioni CloudFront per verificare la presenza di errori "URI path mismatch". Se hai ricevuto questo errore, il percorso URI riscritto non corrisponde al formato previsto dopo l'esecuzione della funzione.

Rivedi il codice della funzione CloudFront per assicurarti che cambi correttamente il percorso dell'URI. Il percorso URI non può contenere caratteri errati e deve includere una barra (/) iniziale.

Esempio di percorso URI:

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

Per ulteriori informazioni, consulta Visualizza CloudFront e le metriche delle funzioni edge.

Il certificato SSL non corrisponde all'origine e al dominio richiesto

Si verifica un problema quando la funzione CloudFront riscrive il valore dell'intestazione host e questo non corrisponde più al dominio del certificato SSL. In questo caso, infatti, la funzione CloudFront inoltra la richiesta a un dominio diverso dal dominio incluso nel certificato SSL.

Per risolvere il problema, modifica la funzione CloudFront affinché riscriva il valore dell'intestazione host in modo che corrisponda al dominio del certificato SSL di origine.

Ad esempio, se il certificato SSL dell'origine utilizza esempio.com, ma il dominio richiesto è www.esempio.com, aggiungi il seguente codice alla funzione CloudFront:

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

L'intestazione host ora viene riscritta in esempio.com prima dell'inoltro della richiesta all'origine.

L'URI nelle distribuzioni SPA non è corretto

Se hai distribuito un'applicazione a pagina singola (SPA) tramite CloudFront, verifica i requisiti per riscrivere le richieste in modo da fornire il file index.html fuorché nel caso delle risorse statiche. Ad esempio, le richieste non controllano le risorse statiche come i file JavaScript o CSS.

Utilizza il seguente codice nella funzione CloudFront per verificare l'estensione di un file o una barra finale nell'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 la richiesta proviene dall'applicazione SPA, l'URI viene riscritto in /index.html. Se la richiesta non proviene dall'applicazione SPA, l'URI non cambia e consente alle richieste di risorse statiche di passare senza modifiche.

Quando modifichi un URL, nell'URI la barra non è presente

Se utilizzi una funzione CloudFront per abbreviare o modificare gli URL, aggiungi una barra all'inizio dell'URI per accettare la richiesta URL.

Esempio di funzione CloudFront per abbreviare l'URL:

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

Informazioni correlate

Reindirizza a un nuovo URL in un evento di richiesta del visualizzatore di Funzioni CloudFront

Riscrivi l'URI di una richiesta in base alla configurazione KeyValueStore per un evento di richiesta del visualizzatore di Funzioni CloudFront

AWS UFFICIALEAggiornata 10 mesi fa