2

node / express 2.xを使用して送信された特定のヘッダーを確認する方法はありますか?

ほとんどの場合完全に機能するファイルのダウンロードがありますが、いくつかの特定のインスタンスでChromeでエラーが発生します(ノードでエラーは発生しません)。

Duplicate headers received from server
The response from the server contained duplicate headers. This problem is generally the result of a misconfigured website or proxy. Only the website or proxy administrator can fix this issue.
Error 349 (net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION): Multiple distinct Content-Disposition headers received. This is disallowed to protect against HTTP response splitting attacks.

テストの目的で、特定のヘッダーが送信されたかどうかを確認したいのですが、node.jsでこれを行う方法はありますか?


...そして、誰かが私がヘッダーを設定するために使用するコードについて私に尋ねようとしているので、私はダウンロードとしてストリームをパイプし、1つの場所にのみヘッダーを設定しています。

res.setHeader('Content-disposition', 'attachment; filename=' + filename)
res.setHeader('Content-Length', stats.size)
res.setHeader('Content-type', 'application/pdf')

stream.pipe(res)
4

3 に答える 3

5

HTTP応答はWritableStreamです。ストリームが閉じると、終了イベントが発行されます。したがって、それを聞くことはトリックを行います:

res.on('finish', function() {
    console.log(res._headers);
});

はるかに柔軟です。ミドルウェアまたはリソースハンドラーに配置できます。

于 2014-08-25T13:53:07.507 に答える
2

@generalhenryが私の質問コメントで述べたように:

stream.pipe(res).on('end', function () {
  console.log(res._headers); 
});

上記の行は私のために働いた。

于 2013-04-18T20:52:06.893 に答える
1
res.set("Content-disposition", "attachment; filename=\""+file.name+"\"")

これは私のために働いた。

于 2016-08-12T21:31:53.780 に答える