Heim >Web-Frontend >js-Tutorial >Warum erhalte ich in Node.js/Express die Fehlermeldung „Header können nach dem Senden nicht festgelegt werden'?
Dieser Fehler tritt auf, wenn versucht wird, Header festzulegen, nachdem die Antwort bereits gesendet wurde an den Kunden gesendet wurde. In Node.js und Express gibt es bestimmte Regeln bezüglich der Reihenfolge, in der Antwortmethoden aufgerufen werden können:
Head State: Bevor res.writeHead() aufgerufen wird, nur res.setHeader () und ähnliche Funktionen können zum Festlegen von Headern verwendet werden.
Body State: Nach dem Aufruf von res.writeHead() werden die Header kann nicht mehr geändert werden. Nur res.write() und res.end() können zum Schreiben von Daten in den Antworttext verwendet werden.
Im bereitgestellten Code tritt der Fehler auf, weil eine Umleitung versucht wird, nachdem die Antwortheader bereits gesendet wurden von res.writeHead(). Konkret verursacht der folgende Code das Problem:
res.redirect("/great");
Um dieses Problem zu beheben, muss die Umleitung erfolgen, bevor res.writeHead() aufgerufen wird. So kann der Code geändert werden:
app.get('/auth/facebook', function(req, res) { req.authenticate("facebook", function(error, authenticated) { if (authenticated) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.redirect("/great"); console.log("ok cool."); console.log(res['req']['session']); } }); });
Durch diese Änderung wird die Umleitung versucht, bevor die Antwortheader gesendet werden, wodurch verhindert wird, dass der Fehler auftritt.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Node.js/Express die Fehlermeldung „Header können nach dem Senden nicht festgelegt werden'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!