Fetch im „No-Cors“-Modus verwenden
Die Fetch-API bietet eine bequeme Möglichkeit, Anfragen an Server zu stellen. Beim ursprungsübergreifenden Zugriff auf Ressourcen kann jedoch die Fehlermeldung „Auf der angeforderten Ressource ist kein ‚Access-Control-Allow-Origin‘-Header vorhanden“ auftreten. Dieser Fehler weist auf eine durch die Same-Origin-Richtlinie auferlegte Sicherheitsbeschränkung hin.
Um CORS in Fetch zu deaktivieren, ist es verlockend, die Option { mode: 'no-cors' } zu verwenden. Dieser Ansatz ist jedoch falsch und unerwünscht.
'No-Cors'-Modus: Ein Fehltritt
Der 'No-Cors'-Modus verhindert im Wesentlichen, dass der Browser auf die Antwort zugreift Körper und Überschriften. Dies bedeutet, dass Ihr Code die abgerufenen Daten nicht verarbeiten oder verwenden kann. Es ist wichtig zu verstehen, dass die Deaktivierung von CORS nicht die Same-Origin-Richtlinie außer Kraft setzt. Es wirkt sich nur darauf aus, wie der Browser die Antwort verarbeitet.
Die Lösung: CORS-Proxy
Anstatt CORS zu deaktivieren, sollten Sie einen CORS-Proxy verwenden. Ein Proxy fungiert als Vermittler zwischen Ihrem Frontend-Code und dem Zielserver. Wenn Sie eine Anfrage über einen Proxy senden, leitet dieser die Anfrage an den Server weiter, empfängt die Antwort und fügt den erforderlichen Access-Control-Allow-Origin-Header hinzu, bevor er ihn an Ihren Code zurückgibt. Dadurch kann Ihr Code ursprungsübergreifend auf die Antwort zugreifen.
Um einen CORS-Proxy einzurichten, können Sie vorhandene Dienste nutzen oder Ihren eigenen Proxy über Plattformen wie Heroku bereitstellen.
Verstehen Cross-Origin-Anfragen
Es ist wichtig zu beachten, dass Browser Einschränkungen auferlegen, auch wenn Sie in Postman ursprungsübergreifend auf Ressourcen zugreifen können Frontend-Code, der in Web-Apps ausgeführt wird. Um den ursprungsübergreifenden Ressourcenzugriff sicherzustellen, muss die Antwort den Access-Control-Allow-Origin-Header enthalten.
Undurchsichtige Antworten: Vorbehalte
Während „no-cors“ Der Modus deaktiviert CORS, erzeugt aber auch undurchsichtige Antworten. Für undurchsichtige Antworten gelten bestimmte Einschränkungen, darunter:
Daher sollte die Verwendung von „no-cors“ nur in bestimmten Situationen in Betracht gezogen werden, beispielsweise beim Caching und Einbetten von Ressourcen in bestimmte HTML-Elemente.
Fazit
Das Deaktivieren von CORS im „No-Cors“-Modus ist nicht die Lösung für den ursprungsübergreifenden Ressourcenzugriff. Stattdessen ist die Verwendung eines CORS-Proxys der bevorzugte Ansatz. Durch Überbrücken der Lücke zwischen Ihrem Frontend und dem Zielserver fügt ein Proxy den erforderlichen Header hinzu, sodass Ihr Code nahtlos über alle Ursprünge hinweg funktionieren kann.
Das obige ist der detaillierte Inhalt vonWarum ist die Verwendung des „No-Cors'-Modus von Fetch nicht die Lösung für die Bearbeitung von Cross-Origin-Anfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!