このトピックに関するオンラインで多量のstackoverflow質問と記事がありますが、特定のアプリケーションに該当するものはありません。node.js/express:送信後にヘッダーを設定することはできません
router.get('/getFile', (req, res) => {
console.log("Calling getFile for file " + req.query.serialNumber + ".")
var serialNumber = req.query.serialNumber;
let request = new sql.Request(conn);
request.query('SELECT FileName + \'.\' + FileExtension AS \'File\', FileType, ContentType, SerialNumber, Chart ' +
'FROM dbo.ChangeFiles ' +
'WHERE SerialNumber = ' + serialNumber)
.then(function (recordset) {
log("Successfully retrieved file " + recordset[0].SerialNumber + " from database.")
res.writeHead(200, {
'Content-Type': recordset[0].ContentType,
'Content-disposition': 'attachment;filename=' + recordset[0].File
});
res.send(Buffer(recordset[0].Chart));
}).catch(function (err) {
log(err);
res.send("Issue querying database!");
});
});
ヘッダーを正しく変更してres.sendヒットの前にヘッダーを変更する方法がわかりません。これはjavascriptの非同期性が原因である可能性が高いですが、私はまだ適切に把握していないことがありますが、res.sendの前にres.writeHeadが呼び出されるようにするにはどうすればよいですか?
ありがとうございました。これをご覧いただきありがとうございます。
(https://stackoverflow.com/questions/23751914/how-can-i-set-response-header-on-express [どのように私はexpress.js資産のレスポンスヘッダを設定することができます]の可能性のある重複-js-assets) – Fals
res.sendの代わりにres.endを使用していますか? –
はres.status()とres.send()と一緒にres.setHeader()を使用します。 – zubair1024