Si verificano errori CORS per le query persistenti di GraphQL in AEM as a Cloud Service
Questo articolo spiega come risolvere i problemi con intestazioni CORS mancanti nelle risposte alle query persistenti di GraphQL in Adobe Experience Manager as a Cloud Service quando è coinvolto il caching a livello di CDN.
Descrizione description
Ambiente
- Adobe Experience Manager as a Cloud Service
- Query persistenti GraphQL
- Memorizzazione nella cache CDN
Problema/Sintomi
- Gli errori CORS del browser si verificano quando si eseguono richieste tra origini diverse agli endpoint di query persistenti di GraphQL.
- Le risposte dalla rete CDN potrebbero non disporre delle intestazioni CORS richieste, causando errori nelle richieste provenienti da origini diverse.
- I browser bloccano le risposte a causa di intestazioni
Access-Control-Allow-Originmancanti, che influiscono sulle integrazioni headless o SPA.
Causa
Le risposte della cache CDN che non includono le intestazioni CORS richieste, anche se la memorizzazione nella cache a livello di dispatcher è disabilitata per l’endpoint. A meno che non venga esplicitamente indicato di non memorizzare in cache, la rete CDN può fornire risposte memorizzate nella cache senza le intestazioni necessarie.
Risoluzione resolution
Per risolvere il problema, segui i passaggi seguenti:
-
Rivedere la configurazione di Dispatcher e verificare che il caching non sia abilitato per l’endpoint di query persistente di GraphQL
/graphql/execute.json/*. La variabile di configurazione che controlla questo comportamento è in genereCACHE_GRAPHQL_PERSISTED_QUERIES. Assicurati che la variabile non sia definita o configurata per impedire la memorizzazione nella cache per questo percorso. -
Aggiornare la configurazione Dispatcher vhost per utilizzare
mod_headerse impostare l’intestazioneCache-Controlsuprivate, no-store, no-cache, must-revalidate, max-age=0per l’endpoint di query persistente GraphQL.code language-none Header set Cache-Control "private, no-store, no-cache, must-revalidate, max-age=0" -
Applica le modifiche alla configurazione e ricarica o riavvia il servizio Dispatcher.
-
Verificare l’endpoint di query persistente GraphQL inviando una richiesta che include un’intestazione
Origin. -
Verificare che la risposta includa l’intestazione
Access-Control-Allow-Originprevista. -
Verificare che l’intestazione di risposta
x-cacherestituiscaMISSanzichéHIT, confermando che la risposta non viene servita dalla cache CDN. -
Rivedi la configurazione dei criteri AEM CORS e verifica che
com.adobe.granite.cors.impl.CORSPolicyImplsia configurato per consentire le origini richieste per l’endpoint. -
Se la rete CDN ha già memorizzato nella cache una risposta che non include l’intestazione CORS richiesta, elimina o invalida la cache per l’endpoint interessato in modo da garantire che le richieste successive ricevano le intestazioni corrette.
-
Verifica che le richieste all’endpoint di query persistente GraphQL restituiscano le intestazioni CORS previste e vengano elaborate correttamente.