GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Cross-Reference Origin Sharing (CORS)

CORS-Fehler

Dieser Artikel enthält eine kurze Beschreibung der CORS-Fehler (Cross-Reference Origin Sharing), die bei Ihren Anfragen über Anwendungen auftreten können.

Was ist CORS?

CORS ist ein Standard, der Interaktionen mit Ressourcen unterschiedlichen Ursprungs ermöglicht. Basierend auf der Same-Origin-Policy (Sicherheitsmechanismus), um zu verhindern, dass ein von einem Ursprung geladenes Dokument oder Skript mit Ressourcen eines anderen Ursprungs interagiert wurde blockiert:„Cross-Origin Request Blocked:The Same Origin Policy verbietet das Lesen der Remote-Ressource auf $somesite “.

Wann weiß ich, ob die Anfragen vom selben Ursprung stammen? Es ist einfach, wenn die beiden URLs dasselbe Protokoll, denselben Host und denselben Port haben. Dies ist ein Beispiel für die Einhaltung der Same-Origin-Policy https://localhost:80/index.html fordert Daten an https://localhost:80/api/user/75214 an. Dies ist ein Beispiel für die Nichteinhaltung der Same-Origin-Policy https://localhost:80/index.html fordert Daten an https://example.com:80/api/user/75214

an

Welche Art von Fehlern könnten auftreten?

Wenn ein CORS-Fehler auf der Konsole angezeigt wird, ist ein Teil des Textes ein Grund Meldung, die angibt, was schief gelaufen ist. Die folgende Liste beschreibt die häufigsten CORS-Fehler:

  1. CORS DEAKTIVIERT
    Grund:Es wurde eine Anfrage versucht, aber CORS ist in Ihrem Browser deaktiviert. Lösung:Sie müssen in den Einstellungsbrowser navigieren und die Option content.cors.disable auf „false“ setzen.
  2. Die CORS-Anfrage war nicht erfolgreich
    Grund:Eine HTTP-Anfrage schlägt auf Netzwerk- oder Protokollebene fehl. In einigen Fällen wird dies durch ein Plugin oder eine Erweiterung verursacht oder weil der zweite Ursprung ein ungültiges Zertifikat hat. Lösung:Wiederholen Sie die Anfrage und deaktivieren Sie die Plugins und Erweiterungen. Überprüfen Sie, ob der zweite Ursprung verfügbar ist und ein gültiges Zertifikat hat.
  3. CORS-Header „Origin“ kann nicht hinzugefügt werden
    Grund:Der Webbrowser kann den erforderlichen Origin-Header nicht zur HTTP-Anforderung hinzufügen. Lösung:Überprüfen Sie, ob das Skript nicht mit erweiterten Rechten ausgeführt wird.
  4. CORS-Anforderung externe Weiterleitung nicht erlaubt
    Grund:Die Anfrage leitet zu einem anderen Ursprung weiter (nicht zum Original). Lösung:Aktualisieren Sie die URL im Code Ihres Servers.
  5. CORS-Anforderung nicht HTTP
    Grund:Die Anfrage wird nicht an eine gültige HTTP-URL umgeleitet, z. B. file:///URL. Lösung:Überprüfen Sie die URL im Code Ihres Servers.
  6. CORS-Header „Access-Control-Allow-Origin“ fehlt
    Grund:Der Antwort fehlt der Access-Control-Allow-Origin header.Lösung:Fügen Sie den Ursprung zum Header der Anfrage hinzu. Access-Control-Allow-Origin:https://rackspace.com oder Sie können * verwenden um den Zugriff von jeder Seite zu erlauben.
  7. CORS-Header „Access-Control-Allow-Origin“ stimmt nicht mit „xyz“ überein
    Grund:Die Antwort enthält mehr als einen Access-Control-Allow-Origin .Lösung:Stellen Sie sicher, dass die CORS-Anfrage so konfiguriert ist, dass Ihr Ursprung in ihrem Access-Control-Allow-Origin enthalten ist Header und hat nur einen Access-Control-Allow-Origin Kopfzeile.
  8. Anmeldedaten werden nicht unterstützt, wenn der CORS-Header 'Access-Control-Allow-Origin' ist '*'
    Grund:Die CORS-Anforderung wurde mit gesetztem Credentials-Flag versucht, aber der Server ist mit dem Platzhalter ("*") als Wert von Access-Control-Allow-Origin konfiguriert, was die Verwendung von Credentials nicht zulässt. Lösung:Stellen Sie sicher, dass der Wert des Credentials-Flags falsch ist, wenn Sie Ihre CORS-Anforderung ausgeben. XMLHttpRequest legt den Wert von withCredentials auf false fest. Vom Server gesendete Ereignisse stellen sicher, dass EventSource.withCredentials falsch ist (dies ist der Standardwert). Wenn Sie die Fetch-API verwenden, stellen Sie sicher, dass Request .credentials ist „weglassen“.
  9. Methode im CORS-Header ‚Access-Control-Allow-Methods‘ nicht gefunden
    Grund:Die Methode des HTTP-Requests ist nicht in der Liste der Access-Control-Allow-Methods enthalten Header.
    Lösung:Konfigurieren Sie den Header mit den erforderlichen Methoden:Access-Control-Allow-Methods:GET,HEAD,POST
  10. Erwartet „true“ im CORS-Header „Access-Control-Allow-Credentials“
    Grund:Wenn die Access-Control-Allow-Credentials des Servers Der Wert des Headers ist nicht auf true gesetzt, um ihre Verwendung zu ermöglichen. Lösung:Überarbeiten Sie auf der Clientseite die folgende Konfiguration:XMLHttpRequest, indem Sie den Wert von withCredentials auf false setzen. Vom Server gesendete Ereignisse stellen Sie sicher, dass EventSource.withCredentials auf false gesetzt ist (dies ist der Standardwert). Wenn Sie die Fetch-API verwenden, stellen Sie sicher, dass Request.credentials „omit“ ist. Um diesen Fehler serverseitig zu beseitigen, setzen Sie Access-Control-Allow-Credentials Wert auf wahr.
  11. Der CORS-Preflight-Kanal war nicht erfolgreich
    Grund:Die CORS-Anfrage erfordert und Preflight und Preflight konnten nicht durchgeführt werden. Eine standortübergreifende Anfrage hat bereits einen Preflight durchgeführt. Bei der Preflight-Anfrage ist ein Netzwerkfehler aufgetreten. Lösung:Stellen Sie sicher, dass Ihr Code nur einmal pro Verbindung einen Preflight durchführt.
  12. Ungültiges Token „xyz“ im CORS-Header „Access-Control-Allow-Methods“
    Grund:Dies tritt auf, wenn die Antwort an CORS Access-Control-Allow-Methods enthält und mindestens eine ist eine ungültige Header-Methode. Lösung:Stellen Sie sicher, dass alle Methoden in den Access-Control-Allow-Methods sind gültige HTTP-Methoden.
  13. ungültiges Token „xyz“ im CORS-Header „Access-Control-Allow-Headers“
    Grund:Dies tritt auf, wenn die Antwort an CORS Access-Control-Allow-Methods enthält und mindestens einer ist ein ungültiger Header-Name.Lösung:Stellen Sie sicher, dass alle Header-Namen in Access-Control-Allow-Headers sind nicht ungültig oder unbekannt.
  14. Fehlendes Token „xyz“ im CORS-Header „Access-Control-Allow-Headers ' vom CORS-Preflight-Kanal
    Grund:Dieser Fehler tritt auf, wenn versucht wird, einen Header zu preflighten, der nicht in der von Access-Control-Allow-Headers angegebenen Liste enthalten ist header.Lösung:Der Server muss aktualisiert werden, damit er den angezeigten Header zulässt oder vermeidet.
  15. Mehrfacher CORS-Header „Access-Control-Allow-Origin“ nicht erlaubt
    Grund:Mehr als ein Access-Control-Allow-Origin Header wurde vom Server gesendet. Lösung:Stellen Sie in Ihrem Server sicher, dass Sie keine Ursprungsliste senden können, da die Browser nur einen einzigen Ursprung oder null akzeptieren.

Schlussfolgerungen

Dieser Artikel zeigt die verschiedenen Arten von Fehlern und mögliche Lösungen, die Sie erhalten können, wenn Sie CORS auf Ihrem Webserver verwenden.


Linux
  1. So konfigurieren Sie Ursprungs-Cloudflare-SSL mit Nginx

  2. Guzzle &Sucuri:Behebung von 403-Anfragefehlern

  3. Gemeinsame Nutzung eines X-Servers (Sitzung) über mehrere Computer hinweg?

  4. Private Schlüssel über Maschinen hinweg teilen?

  5. Gemeinsame Nutzung von Variablen über mehrere Shell-Skripte hinweg?

Ursprungsgeschichten über Unix

FreeDOS wird 25 Jahre alt:Eine Entstehungsgeschichte

Lernen Sie Burp Suite auf Kali Linux:Teil 4

Ablauf der schrittweisen Instanzerstellung in OpenStack

So stellen Sie eine POST-Anfrage mit cURL

Manuelle HTTP(S)-Anfrage