Fehlerbehebung bei CORS in Play Framework 2.4.x

7

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

auf %Vor%

Ich habe die Web-App gemäß den Anweisungen in der Play Framework 2.4.x CORS-Dokumentation konfiguriert :

  • Aktualisierung auf build.sbt
  • Die Klasse Filters.java wurde zum Stamm des Projekts hinzugefügt (auch probiert /app )
  • Die folgende Zeilengruppe wurde zu application.conf

    hinzugefügt

    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 . 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.

    
nize 12.08.2015, 21:08
quelle

7 Antworten

11

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 .

    
Supun Wijerathne 18.05.2016 04:53
quelle
7

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!

    
Radium 10.09.2015 05:56
quelle
3

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.

%Vor%

Dies ist der Logging-Filter (Credit: Play! Framework)

%Vor%     
Richeek 07.03.2016 04:26
quelle
1

Ich hatte ein ähnliches Problem, ich bekam 403 Anfragen. Ich löste das Problem, indem ich das folgende lösche:

%Vor%

, die sie in ihrer Beispielkonfiguration verwenden. Ich bin immer noch nicht klar, was die Sicherheitsimplikationen davon sind, so YMMV.

    
patwhite 21.02.2016 18:57
quelle
0

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.

    
Charles O. 17.08.2015 23:50
quelle
0

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.

    
Henrik Solgaard 08.02.2016 13:39
quelle
0
%Vor%     
Alfaville 30.04.2016 20:17
quelle