Heim >Web-Frontend >js-Tutorial >Warum erhalte ich beim Zugriff auf eine REST-API die Fehlermeldung „Kein ‚Access-Control-Allow-Origin'-Header'?

Warum erhalte ich beim Zugriff auf eine REST-API die Fehlermeldung „Kein ‚Access-Control-Allow-Origin'-Header'?

DDD
DDDOriginal
2024-12-31 15:53:10240Durchsuche

Why Am I Getting a

Kein „Access-Control-Allow-Origin“-Header als Antwort

Verstehen von CORS und Preflight-Anfragen

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.

Lösung des Problems

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.

Korrektur des JavaScript-Codes

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn