2017-10-24 3 views
0

Technologies: Federverschluß Winkel 2 google oauthoauth Antwort für Preflight hat ungültige HTTP-Statuscode 403

Frühjahr Boot-Code Google Auth für die Anmeldung zu verbinden versucht. eckiger Code macht ein http.get, um Benutzerinformationen abzurufen. Ich bekomme den obigen Fehler 403. Früher habe ich "CORS Preflight-Kanal ist nicht gelungen" in Firefox. Umzug nach Chrom gibt mir 403.

Ich suchte SO und Google. Habe einige Fehler behoben, aber habe mein Problem nicht gelöst. Jede Hilfe wird geschätzt.

sring Boot-Controller

@CrossOrigin(origins = {"http://localhost:4200"}) 
    @RestController 
    public class UserRestController { 

    @RequestMapping("/") 
    public RedirectView index() 
    { 
     RedirectView redirectView = new RedirectView(); 
     redirectView.setUrl("http://localhost:4200/"); 
     return redirectView; 
//   return "index"; 
    } 


    @CrossOrigin(origins = {"http://localhost:4200"}) 
    @RequestMapping("/user") 
    public Principal sayHello(Principal principal) { 
     return principal; 
    } 
    } 

Winkel 2 Code

import { Component, OnInit } from '@angular/core'; 
import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 
import {Headers, RequestOptions} from '@angular/http'; 
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 


@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 

@Injectable() 
export class AppComponent implements OnInit { 
    title = 'app works!'; 
    user : any; 

private headers:Headers = new Headers({'Content-Type': 'application/json'}); 

private auth64 = btoa("my-trusted-client:secret"); 
private tokenHeaders = new Headers({ 
'Content-Type': 'application/x-www-form-urlencoded', 
'Authorization': 'Basic '+this.auth64 
}); 

    constructor(private http : Http){ 
    } 


    // method for getting user details 
    getUser() { 
     // this.http.get('http://localhost:8080/user').success(function(user) { 
     // this.user = user; 
     // console.log('Logged User : ', user); 
     // }).error(function(error) { 
     // // $scope.resource = error; 
     // }); 

     let options = new RequestOptions({ headers: this.tokenHeaders}); 
     // let options = { headers : this.tokenHeaders}; 

     this.http.get('http://localhost:8080/user', options) 
     .subscribe ((data :Response)=> { 
      this.user = data; 
      console.log('Logged User : ', data); 
     }); 
    } 


    // method for logout 
    logout() { 

     // this.http.post('http://localhost:8080/logout', null); 
      this.user = null; 

    } 


    ngOnInit() { 
    this.getUser(); 
    } 

} 

Antwort

0

Versuchen Sie es mit dieser:

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi

Dies ist eine Chrome-Erweiterung, die Sie gehen sollen Ihnen helfen, Entwicklungs- und Testzwecke.

für die Produktion:

Ich weiß nicht viel über den Frühling, aber das ist, was ich in meinem PHP-Code, als ich das gleiche Problem hatte.

header('Access-Control-Allow-Origin: *'); 
header("Access-Control-Allow-Credentials: true"); 
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS'); 
header('Access-Control-Max-Age: 86400'); // for 1 day 
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token , 
Authorization');` 

Hoffe es hilft!

+0

Danke. Chrome-Tool half. Jetzt ist der Fehler "Invalid CORS-Anfrage". Lass mich nach einer Lösung suchen. –

+0

Haben Sie versucht, die Header hinzuzufügen, die ich erwähnt habe, und bitte geben Sie eine Upvote, wenn es Ihnen wirklich geholfen hat. –

0

Bitte überprüfen Sie diese Antwort https://stackoverflow.com/a/46433046/836701 Und Sie möchten Informationen über Benutzer in API mit den gleichen Bibliotheken holen, die Sie für die Authentifizierung verwendet haben.

Verwandte Themen