Внутри моего кода приложения для определенного набора API я делаю запрос NodeJS, например следующий, который должен возвращать изображение как тело. Этот же запрос отлично работает на Postman (и я вижу изображение).Запрос на перенаправление изображений на NodeJS
module.exports = {
getThumbnail: function (thumbnailUrn, env, token, onsuccess){
request({
url: config.baseURL(env) + config.thumbail(thumbnailUrn),
method: "GET",
headers: {
'Authorization': 'Bearer ' + token,
}
}, function (error, response, body) {
// error check removed for simplicity...
onsuccess(body);
});
}
}
Приведенный выше код запускается под моими собственными проверками безопасности и добавляет заголовок маркера. Он работает нормально (запрос звонков возвращается 200/OK).
Теперь на моем маршрутизаторе приложений я хочу ответить на это как изображение, но вывод не интерпретируется как изображение. Вот что у меня есть:
var dm = require(/*the above code*/);
// express router
var express = require('express');
var router = express.Router();
router.get('/getThumbnail', function (req, res) {
var urn = req.query.urn;
dm.getThumbnail(urn, req.session.env, req.session.oauthcode, function (thumb) {
res.writeHead(200,
{
'Content-Type': 'image/png'
}
);
// at this point, the 'thumb' variable is filled
// but I believe is not properly encoded...
// or maybe the res.end output is missing something...
res.end(thumb, 'binary');
});
});
module.exports = router;
EDIT: в прокомментированы Nodari Lipartiya, это вид поведения прокси (сервер (реагирует с изображением) -> прокси-сервер (Node.js/пересылает клиенту) -> конец пользователь)
Вы пробовали помощник res.download()? –
, но я не хочу загружать изображение (т. Е. Сохранять на сервере), просто перенаправить (от исходного сервера, через мое приложение, к пользователю). –
Вид поведения прокси (сервер (отвечает изображением) -> прокси (node.js/resends to client) -> конечный пользователь)? –