web-dev-qa-db-ja.com

express.jsで200応答だけを送信する方法

私はnode.js 5.2.0、express 4.2.0および手ごわい1.0.17を持っています。

テキストフィールドと写真を保存する簡単なフォームを作成しました。正常に動作しますが、問題は、データがアップロードされた後、コンソールでPOSTが終了しておらず、まだ保留中であることがわかります。

それを完了するために、これをコードに追加しました

form.on('end', function() {
    res.writeHead(200, {'Content-Type': 'text/plain'});
});

ヘッダーだけを送信し、ページには何も送信しません。システムに200 okページに何も印刷せずに応答します。しかし、POSTはまだ保留中です。

何も印刷せずにこれを修正するにはどうすればよいですか?どのような種類のヘッダーを送信する必要がありますか?

ありがとう

更新

私が行った場合

form.on('end', function() {
    res.end();
});

POSTは正常に終了しますが、空白のページが表示されます。これはなぜですか?ページを印刷せず、リダイレクトせず、同じページにとどまるだけです。

再度、感謝します

14
slevin

代わりにこれを試してください:

_res.sendStatus(200);
_

または、明示的に定義されたヘッダーを引き続き使用したい場合は、res.end()をいつか呼び出す必要があると思います。 Formidableの例res.end()がどのように使用されているかを確認できます。

空白のページは、おそらくクライアント側のフォーム処理の結果です。表示されている自動リダイレクトを防止するために、フォームの送信メソッドをオーバーライドし、Expressサービスに手動で投稿することができます。フォームのリダイレクトに関する質問に対する他のいくつかの stackoverflow応答 を次に示します。答えはjQuery固有ですが、基本的な考え方は変わりません。

23
dvlsg