我正在尝试从CA API调用API,该API以p7b格式将证书文件作为附件返回。我需要将相同的内容附加到我的API并返回给我的客户端。我是NodeJS的新手,我无法让这个工作。有人可以帮忙吗?
我试过res.pipe(),但是没用。我在下面给出了我的代码片段。
app.get("/api/certificate/:certificateid", function (req, res) {
var certificateId = req.params.certificateid;
var header = {
"X-DC-DEVKEY": apiKey,
"Content-Type": "application/json"
};
var options = {
host: certUrl,
port: 443,
method: 'GET',
path: 'xxxxx/certificate/' + certificateId + '/download/format/p7b',
headers: header
};
https.request(options, function (res1) {
// res1.setEncoding('gzip'); DID NOT WORK
res1.on('data', function (data) {
var result = JSON.stringify(data);
console.log(result);
res.setHeader('Content-type', 'application/x-pkcs7-certificates');
res.setHeader('Content-Encoding', 'gzip');
res.setHeader('Content-Disposition', 'filename=blockwaveinsurance_com.p7b');
res.end(data,'gzip');
});
}).end();
});
答案 0 :(得分:0)
出于某种原因,https不能让我通过管道或任何其他方式将附件从远程api重新发送到我的api,但我能够通过请求模块来完成。如果有人需要,这是代码
var certUrl='www.xxxx.com';
var apiKey='xxxxx';
app.get("/api/certificate/:certificateid", function (req, res)
{
var certificateId = req.params.certificateid;
var url=certUrl+"/services/v2/certificate/" + certificateId + "/download/format/p7b";
var options = {
url: url,
headers: {
"X-DC-DEVKEY": apiKey,
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
console.log('no error');
}
}
request(options, callback).pipe(res);
});