Winkel - /Knoten - /Express - /Passport-Cross-Domain-Probleme - Ermöglichen CORS Passport-Facebook-Authentifizierung

Es ist schon zwei Tage und eine million versucht zu aktivieren CORS, wenn Sie versuchen, einen Benutzer zu authentifizieren, die mit Facebook mit Pass in NodeJS/Express.

Den Fehler bekomme ich auf dem Chrom, ist dies:

XMLHttpRequest cannot load https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…%3A8080%2Fauth%2Ffacebook%2Fcallback&scope=email&client_id=598171076960591. 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'http://localhost:8080' is therefore not allowed access. 

Den Routen, die ich benutze sind so einfach:

//=====================================
//FACEBOOK ROUTES =====================
//=====================================
//route for facebook authentication and login

app.get('/auth/facebook', passport.authenticate('facebook', { scope : 'email' }));

//handle the callback after facebook has authenticated the user
app.get('/auth/facebook/callback',
    passport.authenticate('facebook', {
        successRedirect : '/home',
        failureRedirect : '/login'
    }));

Dies ist, wie die Strecke heißt, die auf meinem angularJS-Datei (ich habe auch versucht die Einstellung withCredentials : true):

$http.get('/auth/facebook')
    .success(function(response) {

    }).error(function(response){

    });

Habe ich versucht, ein Dutzend Lösungen, die ich hier gefunden auf StackOverflow und in anderen Foren.

  1. Ich habe versucht, das hinzufügen dieser auf die vor meiner Routen auf der routes.js Dateien:

    app.all('*', function(req, res, next) {
      res.header('Access-Control-Allow-Origin', '*');
      res.header("Access-Control-Allow-Headers", "Content-Type,X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5,  Date, X-Api-Version, X-File-Name");
      res.header('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,OPTIONS');
      res.header('Access-Control-Allow-Credentials', true);
    
      if ('OPTIONS' == req.method) {
          res.send(200);
      } else {
          next();
      }
    });
  2. Ich habe versucht, das hinzufügen dieser auf server.js Datei (Anmerkung, die ich geändert-header setHeader aber ich habe beides ausprobiert):

    app.use(function(req, res, next) {
      res.setHeader('Access-Control-Allow-Origin', '*');
      res.setHeader('Access-Control-Allow-Headers', 'Content-Type,X-Requested-With');
      res.setHeader('Access-Control-Allow-Methods', 'GET,POST,PUT,HEAD,DELETE,OPTIONS');
      res.setHeader('Access-Control-Allow-Credentials', true);
    
      if ('OPTIONS' == req.method) {
        res.send(200);
      } else {
        next();
      }
    
     });
    
     require('./app/routes.js')(app, passport);
  3. Ich habe versucht, das hinzufügen dieser auf meine app.js Datei (angularJS-Konfigurationen):

    $httpProvider.defaults.useXDomain = true;
    delete $httpProvider.defaults.headers.common['X-Requested-With'];
    $httpProvider.defaults.withCredentials = true;

Sowieso, ich weiß nicht, was anderes zu tun. Alles, was ich online gefunden habe nicht funktionieren.
Gibt es eine chance, es hat etwas mit mir zu tun mit AngularJS Routing? Ich sehe keinen Grund, warum dies wichtig sein würde, aber ich irgendwie lief aus Vermutungen.

Meine situation ist sehr ähnlich wie diese:
Winkel - /Knoten - /Express - /Pass - Probleme bei der Verbindung zu facebook(CORS)

Vielen Dank im Voraus!

  • mögliche Duplikate von Wie können CORS in Express/NodeJS?
  • Ich weiß, es gibt eine Menge ähnlicher Fragen, und ich habe gesehen, fast alle von Ihnen. Leider keine der Lösungen, die ich ausprobiert habe, funktionierte so weit...
  • Sie nicht verwenden können beide Access-Control-Allow-Credentials: true und Access-Control-Allow-Origin: *' in der gleichen Zeit. Für Ihren Fall ist, sollten Sie Access-Control-Allow-Origin: localhost:8080 statt *.
  • hi @LarissaLeite, hast du dir schon mal diese Arbeit mit anguar? Ich versuche jetzt schon und bin mit in Ihre Probleme.
  • hast du die Lösung finden ? Es ist zwei Jahre, die Sie geschrieben, aber ich bin vor diesem Problem nun. Dank
Schreibe einen Kommentar