GNU/Linux >> Linux Esercitazione >  >> Linux

Condivisione origine riferimenti incrociati (CORS)

Errori CORS

Questo articolo fornisce una breve descrizione relativa agli errori CORS (Cross-Reference Origin Sharing) che possono apparire nelle tue richieste tramite le applicazioni.

Cos'è CORS?

CORS è uno standard che consente interazioni con risorse di diversa origine. Basato sulla policy della stessa origine (meccanismo di sicurezza) per impedire che un documento o uno script caricato da un'origine possa interagire con risorse di un'altra origine. Se il CORS non è configurato è possibile visualizzare l'errore sul browser della console che indica che la richiesta è stato bloccato:"Richiesta Cross-Origin bloccata:la stessa politica di origine non consente la lettura della risorsa remota su $somesite ”.

Quando so se le richieste provengono dalla stessa origine? È semplice se i due URL hanno lo stesso protocollo, host e porta. Questo è un esempio di conformità con la same-origin-policy https://localhost:80/index.html richiedere i dati a https://localhost:80/api/user/75214Questo è un esempio di non conformità con la same-origin-policy https://localhost:80/index.html richiedere i dati a https://example.com:80/api/user/75214

Che tipo di errori potrebbero apparire?

Quando sulla console viene visualizzato un errore CORS, una parte del testo è un motivo messaggio che indica cosa è andato storto. L'elenco seguente descrive gli errori CORS più comuni:

  1. CORS DISABILITATO
    Motivo:è stata tentata una richiesta ma CORS è disabilitato sul browser. Soluzione:è necessario accedere al browser delle impostazioni e impostare l'opzione content.cors.disable false.
  2. Richiesta CORS non riuscita
    Motivo:una richiesta HTTP non riesce a livello di rete o di protocollo. In alcuni casi è causato da un plug-in o un'estensione o perché la seconda origine ha un certificato non valido. Soluzione:riprovare la richiesta e disabilitare i plug-in e le estensioni. Controlla se la seconda origine è disponibile e ha un certificato valido.
  3. Impossibile aggiungere l'intestazione CORS 'Origin'
    Motivo:il browser Web non può aggiungere l'intestazione di origine richiesta alla richiesta HTTP. Soluzione:verificare se lo script non è in esecuzione con privilegi avanzati.
  4. Richiesta CORS reindirizzamento esterno non consentito
    Motivo:la richiesta reindirizza a un'altra origine (non l'originale).Soluzione:aggiorna l'URL sul codice del tuo server.
  5. Richiesta CORS non HTTP
    Motivo:la richiesta non viene reindirizzata a un URL HTTP valido, ad esempio file:///URL.Soluzione:verifica l'URL nel codice del tuo server.
  6. Intestazione CORS "Access-Control-Allow-Origin" mancante
    Motivo:nella risposta manca il Access-Control-Allow-Origin header.Solution:aggiungi l'origine all'intestazione della richiesta. Access-Control-Allow-Origin:https://rackspace.com oppure puoi usare * per consentire l'accesso da qualsiasi sito.
  7. L'intestazione CORS "Access-Control-Allow-Origin" non corrisponde a "xyz"
    Motivo:la risposta include più di un Access-Control-Allow-Origin .Soluzione:assicurati che la richiesta CORS sia configurata per includere la tua origine nella sua Access-Control-Allow-Origin header e ha solo un Access-Control-Allow-Origin intestazione.
  8. Le credenziali non sono supportate se l'intestazione CORS 'Access-Control-Allow-Origin' è '*'
    Motivo:la richiesta CORS è stata tentata con il flag delle credenziali impostato, ma il server è configurato utilizzando il carattere jolly ("*") come valore di Access-Control-Allow-Origin, che non consente l'utilizzo delle credenziali. Soluzione:Assicurarsi che il valore del flag delle credenziali sia false quando si invia la richiesta CORS.XMLHttpRequest impostando il valore di withCredentials su false. Gli eventi inviati dal server assicurarsi che EventSource.withCredentials sia false (è il valore predefinito). Se si utilizza l'API Fetch, assicurarsi che Request .credentials è "ometti".
  9. Metodo non trovato nell'intestazione CORS 'Access-Control-Allow-Methods'
    Motivo:il metodo della richiesta HTTP non è incluso nell'elenco di Access-Control-Allow-Methods intestazione.
    Soluzione:configura l'intestazione con i metodi necessari:Access-Control-Allow-Methods:GET,HEAD,POST
  10. Previsto "true" nell'intestazione CORS "Access-Control-Allow-Credentials"
    Motivo:quando le Access-Control-Allow-Credentials del server il valore dell'intestazione non è impostato su true per consentirne l'uso.Soluzione:sul lato client, rivedere la configurazione seguente:XMLHttpRequest impostando il valore di withCredentials su false.Gli eventi inviati dal server assicurano che EventSource.withCredentials sia false (è il valore predefinito). Se utilizzi l'API Fetch, assicurati che Request.credentials sia "omit". Per eliminare questo errore sul lato server, imposta Access-Control-Allow-Credentials valore a vero.
  11. Il canale di verifica preliminare CORS non è riuscito
    Motivo:la richiesta CORS richiede e non è stato possibile eseguire il preflight e il preflight. Una richiesta tra siti ha già effettuato un preflight. La richiesta di verifica preliminare ha subito un errore di rete. Soluzione:verifica che il tuo codice sia sottoposto a verifica preliminare una sola volta per connessione.
  12. Token "xyz" non valido nell'intestazione CORS "Access-Control-Allow-Methods"
    Motivo:si verifica quando la risposta al CORS include Access-Control-Allow-Methods e almeno uno è un metodo di intestazione non valido. Soluzione:verifica che tutti i metodi in Access-Control-Allow-Methods sono metodi HTTP validi.
  13. token "xyz" non valido nell'intestazione CORS "Access-Control-Allow-Headers"
    Motivo:si verifica quando la risposta al CORS include Access-Control-Allow-Methods e almeno uno è un nome di intestazione non valido. Soluzione:verifica che tutti i nomi di intestazione in Access-Control-Allow-Headers non sono validi o sconosciuti.
  14. Token 'xyz' mancante nell'intestazione CORS 'Access-Control-Allow-Headers ' dal canale di preflight CORS
    Motivo:questo errore si verifica quando si tenta di eseguire il preflight di un'intestazione che non è inclusa nell'elenco specificato da Access-Control-Allow-Headers header.Solution:il server deve essere aggiornato in modo che consenta l'intestazione indicata o la eviti.
  15. Intestazione CORS multipla "Access-Control-Allow-Origin" non consentita
    Motivo:più di un Access-Control-Allow-Origin l'intestazione è stata inviata dal server.Soluzione:verifica nel tuo server che non puoi inviare un elenco di origini perché i browser accettano solo un'origine singola o nulla.

Conclusioni

Questo articolo mostra i diversi tipi di errori e le possibili soluzioni che puoi ottenere utilizzando CORS all'interno del tuo server web.


Linux
  1. Come spostare Request Tracker in un container Linux

  2. Come configurare l'SSL Cloudflare di origine con Nginx

  3. Guzzle &Sucuri:correzione di 403 errori di richiesta

  4. Rendering Opengl con inoltro X11?

  5. Genera una richiesta di firma del certificato

Storie di origine su Unix

FreeDOS compie 25 anni:una storia sulle origini

Impara Burp Suite su Kali Linux:Parte 4

Flusso di creazione dell'istanza passo dopo passo in OpenStack

Come effettuare una richiesta POST con cURL

Ascolta la richiesta wakeonlan