Ich versuche, Dateien mit einer Post-Anfrage an meinen Server zu senden, aber wenn sie gesendet wird, verursacht sie den Fehler:
Anforderungsheaderfeld Inhaltstyp wird von Access-Control-Allow-Headern nicht zugelassen.
Also habe ich den Fehler gegoogelt und die Header hinzugefügt:
$http.post($rootScope.URL, {params: arguments}, {headers: {
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Methods" : "GET,POST,PUT,DELETE,OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
}
Dann bekomme ich den Fehler:
Anforderungsheaderfeld Access-Control-Allow-Origin ist von Access-Control-Allow-Headern nicht zulässig
Also habe ich das gegoogelt und die einzige ähnliche Frage, die ich finden konnte, war eine halbe Antwort, die dann als Off-Topic geschlossen wurde. Welche Header soll ich hinzufügen / entfernen?
Antworten:
Der Server (an den die POST-Anforderung gesendet wird) muss den
Access-Control-Allow-Headers
Header (usw.) in seine Antwort aufnehmen . Das Einfügen in Ihre Anfrage vom Kunden hat keine Auswirkung.Dies liegt daran, dass der Server festlegen muss, dass er Ursprungsübergreifende Anforderungen akzeptiert (und dass er den
Content-Type
Anforderungsheader usw. zulässt ). Der Client kann nicht selbst entscheiden, ob ein bestimmter Server CORS zulassen soll.quelle
Content-Type
?Ich hatte das gleiche Problem. In der jQuery-Dokumentation fand ich:
Obwohl der Server eine Anforderung für unterschiedliche Herkunft zulässt
Access-Control-Allow-Headers
, diese jedoch nicht zulässt , werden Fehler ausgegeben. Standardmäßig lautetapplication/json
der Winkelinhaltstyp, der versucht, eine OPTION-Anforderung zu senden. Versuchen Sie, den eckigen Standardheader zu überschreiben oder das Serverende zuzulassenAccess-Control-Allow-Headers
. Hier ist ein eckiges Beispiel:quelle
or allow Access-Control-Allow-Headers in server end
Wie?header
, um den Header der Antwort zu setzenWenn das irgendjemandem hilft (auch wenn dies etwas schlecht ist, da wir dies nur für Entwicklungszwecke zulassen müssen), ist hier eine Java-Lösung, da ich auf dasselbe Problem gestoßen bin. [Bearbeiten] Verwenden Sie nicht den Platzhalter *, da dies eine schlechte Lösung ist
localhost
Sie ihn wenn wirklich etwas lokal funktionieren muss.quelle
Der Server (an den die POST-Anforderung gesendet wird) muss den Inhaltstyp enthalten Header in seine Antwort aufnehmen.
Hier ist eine Liste typischer Header, einschließlich eines benutzerdefinierten "X_ACCESS_TOKEN" -Headers:
Das muss Ihr http-Server-Typ für den Webserver konfigurieren, an den Sie Ihre Anforderungen senden.
Möglicherweise möchten Sie auch Ihren Server bitten, den Header "Content-Length" offenzulegen.
Er erkennt dies als CORS-Anforderung (Cross-Origin Resource Sharing) und sollte die Auswirkungen dieser Serverkonfigurationen verstehen.
Für Details siehe:
quelle
Sie können den richtigen Header in PHP damit aktivieren:
quelle
Folgendes funktioniert für mich mit nodejs:
quelle
Die Header Sie Satz versuchen , sind Antwort - Header. Sie müssen in der Antwort von dem Server bereitgestellt werden, an den Sie die Anfrage stellen.
Sie haben keinen Platz auf dem Client festgelegt. Es wäre sinnlos, über ein Mittel zum Erteilen von Berechtigungen zu verfügen, wenn diese von der Site erteilt werden könnten, die die Berechtigung wünschte , anstelle der Site, der die Daten gehörten.
quelle
Wenn dieses Problem bei einem Express-Server auftritt, fügen Sie die folgende Middleware hinzu
quelle
Wenn Sie einige Javascript-Anforderungen für ionic2 oder anglejs 2 in Ihrem Chrome auf einem PC oder Mac testen, müssen Sie das CORS-Plugin für den Chrome-Browser installieren, um Cross-Origin zuzulassen.
mayba get Anfragen werden funktionieren, ohne dass dies erforderlich ist, aber beim Posten und Setzen und Löschen müssen Sie das cors-Plugin installieren, damit das Testen ohne Probleme funktioniert. Das ist definitiv nicht cool, aber ich weiß nicht, wie die Leute es ohne das CORS-Plugin machen.
und stellen Sie außerdem sicher, dass die JSON-Antwort nicht 400 von einem JSON-Status zurückgibt
quelle
Dies ist ein Backend-Problem. Wenn Sie die Segel-API im Backend verwenden, ändern Sie cors.js und fügen Sie Ihre Datei hier hinzu
quelle
In Asp Net Core , damit es schnell für die Entwicklung funktioniert; in
Startup.cs
,Configure method
hinzufügenquelle
In meinem Fall erhalte ich mehrere Parameter als @HeaderParam in einer Webdienstmethode.
Diese Parameter MÜSSEN in Ihrem CORS-Filter folgendermaßen deklariert werden:
quelle
Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers
Fehler bedeutet, dass dasAccess-Control-Allow-Origin
Feld des HTTP-Headers nicht als Antwort behandelt oder zugelassen wird. Entfernen Sie dasAccess-Control-Allow-Origin
Feld aus dem Anforderungsheader.quelle
Wenn Sie
localhost
PHP verwenden und PHP einstellen, um das Problem zu lösen:Von Ihrem Front-End-Einsatz:
und boom keine ausgaben mehr ab
localhost
!quelle