In Node.js/Express.js erlaubt das Antwortobjekt (res). Damit bestimmte Methoden nur in bestimmten Phasen der Bearbeitung einer Anfrage aufgerufen werden. Eine dieser Phasen ist die „Head“-Phase, in der Header mithilfe von Methoden wie res.setHeader() festgelegt werden können. Sobald jedoch die Phase „Body“ betreten wird, können keine Header mehr festgelegt werden.
Der Fehler, auf den Sie stoßen („Fehler: Kann nicht „Header festlegen, nachdem sie an den Client gesendet wurden“) deutet darauf hin, dass Sie versuchen, Header festzulegen, nachdem die Antwort bereits in die „Body“-Phase eingetreten ist. Um dieses Problem zu beheben, müssen Sie sicherstellen, dass Header während der „Head“-Phase festgelegt werden, bevor Daten in die Antwort geschrieben werden.
In Ihrem speziellen Fall wird der Fehler ausgelöst, weil Sie res aufrufen. redirect() innerhalb Ihrer Authentifizierungs-Middleware-Funktion. Dadurch wird die Antwort gesendet und in die Phase „Body“ verschoben. Wenn daher der Fehler ausgelöst wird und Express versucht, eine Fehlerseite zu senden, schlägt dies fehl, da keine Header mehr festgelegt werden können.
Um dieses Problem zu beheben, können Sie die Funktion next() in Ihrer Middleware verwenden, um zu übergeben Steuerung an die nächste Middleware in der Kette oder an den Express-Router. Dadurch kann der Fehler ordnungsgemäß behandelt und die entsprechende Antwort gesendet werden.
app.get('/auth/facebook', function(req, res, next) { req.authenticate("facebook", function(error, authenticated) { if (authenticated) { res.redirect("/great"); console.log("ok cool."); console.log(res['req']['session']); } else { next(error); // Pass the error to the error-handling middleware } }); });
Durch Übergabe des Fehlers an die Fehlerbehandlung Middleware können Sie sicherstellen, dass die entsprechende Fehlerantwort gesendet wird, ohne dass der Fehler „Header können nach dem Senden nicht festgelegt werden“ auftritt.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Node.js/Express.js die Fehlermeldung „Header können nach dem Senden an den Client nicht festgelegt werden' und wie kann ich sie beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!