javascript - Meteor js,React 自定义图像重定向/meteor WebApp
问题描述
大家好,
我尝试在流星中对图像进行自定义重定向,这样我就可以使用较短的自定义链接将我重定向到在亚马逊上传的图像:
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
解决方案
首先,我看到您从 S3 获取图像,而您可能应该通过 Cloudfront 获取它们。主要区别在于缓存。此外,当您将图像保存到 S3 时,请确保设置了“过期”和“缓存控制”,以便您的用户将图像缓存在本地设备上(如果需要)。使用 Cloudfront,您可以拥有类似 assets.yourdomain.com/....您的资产的链接。
简单而安全的做法是声明一个全局变量,例如
var IMAGE = 'https//........your cloudfront root '
在代码中你最终会得到类似的东西:
<img src={`${IMAGE}/${imagename}.jpg`}
如果您需要完全的安全性并完全“混淆”图像链接/来源,您可以使用非常受支持的 Ostrio Files Meteor 包。
磷
推荐阅读
- selenium - XPath 索引选择器返回整个数组,而不是索引处的元素
- kubernetes - 使用 kubectl 在 pod 中执行 bash 命令?
- yii2 - SQLSTATE[HY000] [1130] 不允许主机 'xxx' 连接到此 MariaDB 服务器
- android - RecyclerView OnClick 在其他位置更改项目
- sql-server - SSIS错误将Excel工作表加载到表格 - OLEDB错误
- solr - 使用 facet.field 调试 Solr 查询显示多于查询结果的文档的方面结果
- asp.net - 我想在 asp.net 中输入文本框触发服务器端事件
- javascript - router.put 不工作,app.put 工作正常
- android - 如果两个不同的异步回调启动两个不同的同步方法会发生什么?
- android - 仅使用 TCP 通信的 AOSP SystemService