82

ヘッダーを設定できるライブラリを作成しています。Node.js によって「送信後にヘッダーを設定できません」というメッセージで失敗させるのではなく、ヘッダーが既に送信されている場合にカスタム エラー メッセージを表示したいと考えています。では、ヘッダーが既に送信されているかどうかを確認するにはどうすればよいでしょうか?

4

3 に答える 3

192

ノードは最近サポートしているres.headersSentので、それを使用できます/使用する必要があります。これは、ヘッダーがすでに送信されているかどうかを示す読み取り専用のブール値です。

if(res.headersSent) { ... }

http://nodejs.org/api/http.html#http_response_headerssentを参照してください

注: これは、Niko が言及している古い Connect の「headerSent」プロパティと比較して、推奨される方法です。

于 2014-06-06T08:46:21.310 に答える
69

編集: Express 4.x 以降では、res.headersSent を使用する必要があります。res.send() の呼び出しの直後に true に設定されないため、チェックする前に setTimeout を使用することもできます。ソース

シンプル: Connect の Response クラスは、パブリック プロパティ "headerSent" を提供します。

res.headerSentヘッダーがすでにクライアントに送信されているかどうかを示すブール値です。

ソースコードから:

/**
   * Provide a public "header sent" flag
   * until node does.
   *
   * @return {Boolean}
   * @api public
   */

  res.__defineGetter__('headerSent', function(){
    return this._header;
  });

https://github.com/senchalabs/connect/blob/master/lib/patch.js#L22

于 2012-08-19T22:20:12.760 に答える