Ich habe eine Java-Play-Framework-2.4.x-Web-App, die eine JSON / HTTP-API bereitstellt. Wenn ich mein Frontend-HTML / JS file:///Users/nize/tmp/index.html
aufrufe, ruft die API auf http://localhost:9000
chrome show
Ich habe die Web-App gemäß den Anweisungen in der Play Framework 2.4.x CORS-Dokumentation konfiguriert :
build.sbt
Filters.java
wurde zum Stamm des Projekts hinzugefügt (auch probiert /app
) Die folgende Zeilengruppe wurde zu application.conf
play.filters.cors { allowedOrigins = ["*", " Ссылка "] #allowedHttpMethods = ["GET", "POST"] #allowedHttpHeaders = ["Akzeptieren"] #preflightMaxAge = 3 Tage }
Was vermisse ich?
Bearbeiten: Die Symptome sehen identisch oder ähnlich wie andere sehr ähnliche stackoverflow-Post < a>. Dieses Problem wurde durch die Neukonfiguration von Cisco AnyConnect VPN gelöst, das auf dem Computer installiert wurde. Ich habe jedoch diese Software nicht installiert.
Fügen Sie diese Zeilen (Konfigurationen) zuerst in Ihre conf / application.conf
ein %Vor%(Beachten Sie, dass Zeilen, die mit '#' beginnen, auskommentierte Zeilen sind.)
Dann gehe zu build.sbt und füge diese Zeile hinzu.
%Vor%Schließlich erstellen Sie eine Java-Klasse namens "Filters.java" und fügen Sie diese in das Stammverzeichnis (/ app) ein.
%Vor%Weitere Informationen finden Sie in der offiziellen Dokumentation .
Ich hatte das gleiche Problem, wenn ich der gleichen Dokumentation folgte.
Problem ist mit diesem CORS-Filter, den Sie verwendet haben:
%Vor%Wenn Sie alle Ursprünge verwenden möchten:
%Vor% Folgen Sie dem gleichen für allowedHttpMethods
Dies ist gemäß der Dokumentation
>Um zu zitieren:
Die erlaubten Ursprünge. Wenn null, sind alle Ursprünge erlaubt.
%Vor%
Hoffe, das hilft!
Ich denke, der CORS-Filter in Play funktioniert nicht! Ich folgte Schritt für Schritt, aber irgendwie bekam ich immer HTTP-403 im Browser (Chrome und Firefox) in Ajax-Anrufen. Problem ist, dass ich nicht einmal StackTrace auf Serverseite bekomme. Ich denke, DefaultHttpErrorHandler
im CORS-Filter schluckt das irgendwie. In der Antwort "Access-Control-Allow-Origin" Header fehlt, so dass ich nur manuell hinzugefügt.
Dies ist der Logging-Filter (Credit: Play! Framework)
%Vor%Funktioniert es in Firefox? In Chrome gibt es einige Einschränkungen für die Ausführung von Ajax aus lokalen Dateien, siehe z. B. diesen Link . Wenn es Chrome-spezifisch ist, können Sie Chrome mit einem Befehlszeilenschalter starten, um die Einschränkung zu entfernen.
Dies wird wahrscheinlich nicht das Problem für das Poster lösen, aber es löste das Problem für mich, wenn ich die gleichen Symptome hatte, und ich poste es für den Fall, dass es anderen in der gleichen Situation helfen kann.
Ich hatte eigentlich falsch verstanden, wie CORS funktioniert. Ich habe zwei separate Play-Anwendungen, eine mit einer REST-API und eine mit einer Web-Schnittstelle, die die REST-API verwendet. Ich folgte den Anweisungen auf der Dokumentationsseite, die in der Frage erwähnt wurde, aber mein Fehler war, dass ich es in der Web-Interface-Anwendung tat. Als ich es stattdessen in der REST-API-Anwendung ausführte, funktionierte es sofort.
Tags und Links java cors playframework playframework-2.4