大家好,
我尝试在meteor中对图像进行自定义重定向,这样我就可以使用较短的自定义链接将我重定向到在亚马逊上传的图像:
WebApp.connectHandlers.use(function(request, response, next) {
if (~request._parsedUrl.path.indexOf('/image') > -1) {
response.writeHead(301, {
Location:
'https://s3.eu-central-1.amazonaws.com/my-prepo/folder/imageName123456.jpg',
});
response.end();
}
next();
});
就在我编写时,我可以在 jsfiddle 等外部页面中很好地使用它:
<img src="http://localhost:4003/image" />
但是当我在我的反应前端中使用它时,<img src="/image" />
图像没有出现,并且服务器中出现错误:
E20180825-11:59:12.452(3) (webapp_server.js:799) Error running template: Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:491:11)
at ServerResponse.setHeader (_http_outgoing.js:498:3)
at ServerResponse.setWriteHeadHeaders (/home/bux/.meteor/packages/webapp/.1.5.0.1phld1g.dmro++os+web.browser+web.cordova/npm/node_modules/on-headers/index.js:82:19)
at ServerResponse.writeHead (/home/bux/.meteor/packages/webapp/.1.5.0.1phld1g.dmro++os+web.browser+web.cordova/npm/node_modules/on-headers/index.js:41:36)
at getBoilerplateAsync.then (packages/webapp/webapp_server.js:791:13)
at /home/bux/.meteor/packages/promise/.0.10.2.12fknlz.thdv++os+web.browser+web.cordova/npm/node_modules/meteor-promise/fiber_pool.js:43:40
我该怎么做才能使用我自己的链接来显示图像<img src="/image"
?
非常感谢您的建议 Bukso
我解决了这样的问题:
WebApp.connectHandlers.use(function(req, res, next) {
const reqUrlParts = req.url.split('/');
let urlToRedirect = 0;
if (reqUrlParts[1] && reqUrlParts[1] === 'files') {
urlToRedirect = fileHandler.handleUrl(req);
}
if (urlToRedirect) {
res.writeHead(301, {
Location: urlToRedirect,
});
res.end();
} else {
next();
}
});
谢谢你的建议。关于过期链接 - 我由我的系统处理它,也就是说,如果它过期,我会自动更新它,并重定向到新的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句