Heim  >  Artikel  >  Backend-Entwicklung  >  Warum schlägt meine AngularJS-POST-Anfrage mit einem 404 für die Preflight-Anfrage fehl?

Warum schlägt meine AngularJS-POST-Anfrage mit einem 404 für die Preflight-Anfrage fehl?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-03 14:56:30259Durchsuche

Why Does My AngularJS POST Request Fail with a 404 for the Preflight Request?

AngularJS POST Request Failure: HTTP 404 for Preflight Request

In AngularJS kann bei POST-Anfragen ein ungelöster Fehler „XMLHttpRequest kann nicht geladen werden“ auftreten . Dies wird durch einen ungültigen HTTP-Statuscode (404) für die Preflight-Anfrage verursacht, die dem eigentlichen POST vorausgeht. Mit der Preflight-Anfrage soll überprüft werden, ob der angeforderte Vorgang zulässig ist, um die Einhaltung der CORS-Richtlinien (Cross-Origin Resource Sharing) sicherzustellen.

Ursache: Fehlende CORS-Header

Die zugrunde liegende Fehlerursache liegt darin, dass der Server die Preflight-OPTIONS-Anfrage nicht ordnungsgemäß verarbeitet. Um Cross-Origin-Anfragen zu ermöglichen, muss der Server entsprechende CORS-Header festlegen.

Lösung: CORS-Header serverseitig hinzufügen

In SlimPHP können Sie CORS-Header hinzufügen das Antwortobjekt:

<code class="php">$app->response()->headers->set('Access-Control-Allow-Headers', 'Content-Type');
$app->response()->headers->set('Content-Type', 'application/json');
$app->response()->headers->set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
$app->response()->headers->set('Access-Control-Allow-Origin', '*');</code>

Lösung: Preflight-Anfragen clientseitig deaktivieren

Alternativ können Sie Preflight-Anfragen clientseitig deaktivieren, indem Sie die allgemeinen Header in AngularJS zurücksetzen :

<code class="js">app.config(function ($httpProvider) {
  $httpProvider.defaults.headers.common = {};
  $httpProvider.defaults.headers.post = {};
  $httpProvider.defaults.headers.put = {};
  $httpProvider.defaults.headers.patch = {};
});</code>

Zusätzliche Überlegungen

Für POST-Anfragen mit sensiblen Daten müssen Sie möglicherweise Authentifizierungs- und Autorisierungsmechanismen wie JSON Web Tokens (JWT) implementieren. um die Verbindung zu sichern. Es ist wichtig, CORS gründlich zu verstehen und die ordnungsgemäße Bearbeitung von OPTIONS-Anfragen sicherzustellen, um Sicherheitsverletzungen zu verhindern.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine AngularJS-POST-Anfrage mit einem 404 für die Preflight-Anfrage fehl?. 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