2017-11-24 3 views
0

Also arbeite ich an einem Gruppenprojekt und alle von uns haben unsere git Zweige an den Kopf des Meisters geschoben. Das bedeutet, dass wir alle denselben Code ausführen. Wenn wir auf die Zielseite unseres Projekts gehen, sendet unsere ngOnInit() eine Get-Anfrage mit einem Header, der einen benutzerdefinierten Header enthält, oder?403 nur auf meiner Maschine - Angular 2 & Tomcat 8.5

createAuthorizationHeader(headers: Headers) { 
    let sessionID = JSON.parse(localStorage.getItem('user-data')).JSESSIONID; 
    headers.append('JSESSIONID', sessionID); 
    headers.append('Access-Control-Allow-Headers', 'JSESSIONID'); 
    headers.append('Access-Control-Allow-Origin', 'http://localhost:4200/webplayer'); 
    } 

ngOnInit() { 
    let header = new Headers(); 
    this.createAuthorizationHeader(header); 
    let params = new URLSearchParams(); 
    let options = new RequestOptions({ headers: header, params: params    }); 

    this.http.get('http://localhost:8080/sample-webapp/rest/music/landingPage', options) 
    .subscribe(data => this.popularArtists = JSON.parse(data["_body"]).popularArtists); 

scheint harmlos, meine Teamkollegen ein 200 als Antwort erhalten, aber ich bekomme diese Meldung:

403 Preflight Error Message

Btw diese Anfrage mit Postbote auf meiner Maschine arbeitet, so dass es mich hinführt zu denken, dass Diese muss etwas mit dem Browser zu tun haben (gleiche Probleme für Safari, Chrome und Firefox).

Wir haben also alles getan, von dem Hinzufügen zusätzlicher Felder zu der web.xml des Servers, dem Hinzufügen von Optionsanmerkungen, dem Löschen von Cookies. Ich möchte wirklich wissen, was es nicht nur auf meiner Maschine funktioniert. Ich habe vielleicht etwas in den vorherigen Schritten verpasst, also lassen Sie mich bitte wissen, was funktionieren könnte. Ich kann auch meine web.xml und andere Sachen auf Anfrage hinzufügen.

BACKEND CORS FILTER:

response.getHeaders().add("Access-Control-Allow-Origin", request.getHeaderString("origin")); 
    response.getHeaders().add("Access-Control-Allow-Headers", request.getHeaderString("access-control-request-headers")); 
    response.getHeaders().add("Access-Control-Allow-Credentials", "true"); 
    response.getHeaders().add("Access-Control-Expose-Headers", "JSESSIONID"); 
    response.getHeaders().add("Access-Control-Allow-Methods", request.getHeaderString("access-control-request-method")); 
+0

Funktioniert es auf anderen Entwicklungsmaschinen? –

+0

Ja, es funktioniert mit den Browsern und Back-Ends anderer Teammitglieder – user287474

+0

Und was sind Ihre CORS-Optionen? Führen Sie eine Middleware aus, die die Header entfernen könnte? –

Antwort

0

So dachten wir es aus und verändert die Header-Funktion dazu:

createAuthorizationHeader(headers: Headers) { 
    let sessionID = JSON.parse(localStorage.getItem('user-data')).JSESSIONID; 
    headers.append('JSESSIONID', sessionID); 
} 

und es funktionierte. Wenn mir jemand sagen kann, warum, würde ich es begrüßen.

Verwandte Themen