Heim >Web-Frontend >js-Tutorial >Warum erhalte ich beim Zugriff auf eine REST-API die Fehlermeldung „Kein ‚Access-Control-Allow-Origin'-Header'?
Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, der es Browseranfragen ermöglicht, auf Ressourcen von anderen Ursprüngen als dem anfordernden Ursprung zuzugreifen. Wenn eine Anfrage von einem anderen Ursprung erfolgt, sendet der Browser eine Preflight-OPTIONS-Anfrage an den Server, um zu prüfen, ob der Server die Anfrage zulässt.
In dem in der Frage beschriebenen Fall sendet der Browser eine Preflight-OPTIONS-Anfrage Anfrage an die HP ALM REST API. Der Server antwortet jedoch nicht mit den erforderlichen CORS-Headern, was den Fehler „Auf der angeforderten Ressource ist kein ‚Access-Control-Allow-Origin‘-Header vorhanden“ verursacht.
Es gibt mehrere Möglichkeiten, dieses Problem zu lösen:
Verwendung eines CORS Proxy:
Ein CORS-Proxy leitet die Anfrage an den Zielserver weiter und fügt der Antwort die erforderlichen CORS-Header hinzu. Dies kann praktisch sein, wenn Sie keine Kontrolle über den Zielserver haben.
Preflight-Anfragen vermeiden:
Um die Preflight-Anfrage zu vermeiden, können Sie sicherstellen, dass die Anfrage erfordert keine Authorization- oder Content-Type-Header. Dies kann durch die Verwendung alternativer Authentifizierungsmethoden oder die Kodierung der JSON-Daten als Abfrageparameter erreicht werden.
Lösen des Platzhalterproblems:
Der Fehler „Access-Control-Allow -Origin-Header darf nicht der Platzhalter sein“ tritt auf, wenn der Server einen Platzhalter („*“) für den Access-Control-Allow-Origin-Header anstelle des spezifischen Ursprungs des angibt anfragender Kunde. Um dieses Problem zu lösen, konfigurieren Sie den Server so, dass er den Access-Control-Allow-Origin-Header auf den anfordernden Ursprung setzt.
Der JavaScript-Code in der Frage enthält einige falsche Header lösen die Preflight-Anfrage aus:
headers.append('Access-Control-Allow-Origin', 'http://localhost:3000'); headers.append('Access-Control-Allow-Credentials', 'true');
Entfernen Sie diese Header, da sie nicht in der Anfrage gesendet werden sollten.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Zugriff auf eine REST-API die Fehlermeldung „Kein ‚Access-Control-Allow-Origin'-Header'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!