ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js/Express で「送信後にヘッダーを設定できません」というエラーが表示されるのはなぜですか?
このエラーは、応答がすでに送信された後にヘッダーを設定しようとすると発生しますクライアントに送信されました。 Node.js と Express では、応答メソッドを呼び出す順序に関して特定のルールがあります:
ヘッド状態: res.writeHead() が呼び出される前に、res.setHeader のみが呼び出されます。 () および同様の関数を使用してヘッダーを設定できます。
Body State: res.writeHead() の後が呼び出されると、ヘッダーは変更できなくなります。応答本文にデータを書き込むために使用できるのは res.write() と res.end() のみです。
提供されたコードでは、応答ヘッダーがすでに送信された後にリダイレクトが試行されるため、エラーが発生します。 res.writeHead() による。具体的には、次のコードが問題の原因となります。
res.redirect("/great");
これを修正するには、res.writeHead() が呼び出される前にリダイレクトを実行する必要があります。コードの変更方法は次のとおりです。
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']); } }); });
この変更を行うと、応答ヘッダーが送信される前にリダイレクトが試行され、エラーの発生が防止されます。
以上がNode.js/Express で「送信後にヘッダーを設定できません」というエラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。