Una richiesta di condivisione di risorse multiorigine (CORS) si verifica quando un’applicazione basata su browser, come un’app Zendesk App Framework (ZAF), tenta di effettuare una chiamata multiorigine per recuperare una risorsa condivisa da un servizio web esterno.

Una richiesta CORS richiede determinate condizioni per funzionare. Una condizione è che il servizio esterno debba restituire l’intestazione HTTPAccess-Control-Allow-Origin nella risposta. Se il servizio esterno non restituisce questa intestazione, il sistema interrompe la richiesta e visualizza un messaggio di errore.

Usa questa guida per risolvere i problemi comuni relativi aAccess-Control-Allow-Origin messaggio di errore. Di seguito sono riportati esempi di messaggi di errore.

  • Caricamento non riuscito... Nessuna intestazione "Access-Control-Allow-Origin".
  • Richiesta multiorigine bloccata: la policy della stessa origine non consente la lettura della risorsa remota... Motivo: Intestazione CORS "Access-Control-Allow-Origin" mancante
  • Caricamento non riuscito... La risposta alla richiesta di verifica preliminare non supera il controllo di accesso: nessuna intestazione "Access-Control-Allow-Origin" presente nella risorsa richiesta. L’accesso a Origin... non è quindi consentito

Questo articolo contiene i seguenti argomenti.

  • Domande per la risoluzione dei problemi
  • Passaggi per la risoluzione
  • Alternative a CORS

Domande per la risoluzione dei problemi

Prima di risolvere l’errore, prendi nota delle domande seguenti e identifica i parametri specifici che possono aiutarti a risolvere il problema:

  1. Qual è l’URL del punto iniziale della chiamata o l’origine? Qual è l’URL del servizio esterno? A volte sono dettagliati nel messaggio di errore.
  2. Che cosa recuperi e a cosa serve? Recuperi un file PNG, uno script, CSS o un file di caratteri? Ciò fornisce una panoramica del caso d’uso e del motivo per cui la risorsa esterna è importante.
  3. Qual è il browser usato e la sua versione? Nonostante lo standard delle specifiche CORS , i messaggi di errore restituiti dai browser possono essere diversi.
  4. Questa risorsa esterna richiede l’autenticazione? Se è necessario un reindirizzamento, ilAccess-Control-Allow-Origin l’intestazione potrebbe non essere restituita e la chiamata non riesce. Accedi all’URL della risorsa in modalità di navigazione in incognito o in navigazione privata per verificare se è accessibile in circostanze generali.
  5. Riesci a vedere ilOPTIONS Chiamata al metodo HTTP nelle impostazioni di rete del browser? Quando sono presenti richieste personalizzate, il browser può effettuare una chiamata HTTP preliminare nella richiesta CORS, che richiede determinati valori. Se ilOPTIONS chiamata non riesce, viene visualizzato l’errore CORS.
  6. Il codice di stato HTTP 302 viene visualizzato prima diOPTIONS chiamare? Indica un reindirizzamento temporaneo, che potrebbe causare ilOPTIONS call to fail e quindi attivare un errore CORS.
  7. Genera un file HAR. Ottieni uno snapshot della chiamata non riuscita per comprendere ed eseguire il debug del problema.

Passaggi per la risoluzione

Di seguito sono elencate le possibili soluzioni e soluzioni alternative per correggere il messaggio di errore:

  • Se sei il proprietario del server esterno, modificalo in modo che restituisca il fileAccess-Control-Allow-Origin intestazione. Se il server esterno non è controllato internamente, coordinati con il proprietario del server.
  • Se l’app è scritta con il Zendesk App Framework , è disponibile un server proxy di backend tramite ilclient.request() chiamata. Usa il valore predefinitocors:false nelle impostazioni per inviare richieste al server proxy. Poiché il servizio proxy si trova nel backend, non è necessario che aderisca allo standard delle specifiche CORS. Tuttavia, questa non è sempre una soluzione. Una limitazione è che il servizio proxy non assistenza il recupero di informazioni binarie da servizi esterni.

A volte non ci sono soluzioni. Esistono risorse esterne che non devono essere condivise con un’app web basata su browser.

Alternative a CORS

Per evitare errori correlati a CORS in futuro, implementa queste alternative:

  • Se usi un’app Zendesk App Framework , usa il server proxy. Invece di direttofetch() o AJAX, usaclient.request() chiamata che inoltra le richieste tramite Zendesk.
  • Usa l’ SDK Web Widget per incorporare chat, messaggistica, ticketing, talk e centro assistenza nella tua app web. L’SDK gestisce automaticamente l’autenticazione e CORS.
  • Effettua invece chiamate API dal server di backend. Una richiesta CORS può generare un errore quando chiama l’API Zendesk direttamente da un browser. Le richieste da server a server non hanno limitazioni CORS, a differenza delle richieste basate su browser.
  • Invece di una richiesta CORS, incorpora la risorsa esterna per evitare qualsiasi chiamata multiorigine. Questa soluzione potrebbe non funzionare se non disponi dell’URL della risorsa esterna, se è troppo grande per essere inserito come risorsa locale, se i dati cambiano troppo spesso per essere scaricati come risorsa statica locale o se non è possibile incorporare la risorsa esterna.

Avvertenza sulla traduzione: questo articolo è stato tradotto usando un software di traduzione automatizzata per fornire una comprensione di base del contenuto. È stato fatto tutto il possibile per fornire una traduzione accurata, tuttavia Zendesk non garantisce l'accuratezza della traduzione.

Per qualsiasi dubbio sull'accuratezza delle informazioni contenute nell'articolo tradotto, fai riferimento alla versione inglese dell'articolo come versione ufficiale.

Powered by Zendesk