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!