我们假设我们要求S3存储桶获取图像:
<img src="https://s3-us-west-2.amazonaws.com/{BUCKET}/logo.png" />
我需要在无法访问互联网的情况下处理这个项目,所以在我的Express服务器中,我需要找到一种方法将所有请求从https://s3-us-west-2.amazonaws.com/{BUCKET}
重定向到~/Desktop/project/{BUCKET}
。
有没有办法通过代理执行此操作,或者更好的方法是剪切新分支并将所有外部资产链接替换为本地文件位置?
答案 0 :(得分:1)
您可以在网络面板中找到类似的内容
“https://s3-us-west-2.amazonaws.com/{BUCKET}/logo.png
”
您基本上可以删除所有“http://s3-us-west-2.amazonaws.com
”
让我们说你在localhost:3000上运行它,你的请求看起来像http://localhost:3000/{BUCKET}/logo.png
您可以在快速服务器中添加以下行。
var request = require('request');
var proxy = true //if running locally else false
app.get('/{BUCKET}/logo.png', function (req,res) {
if (proxy)
res.sendFile('/home/Desktop/project/' + req.url)
else {
var options = {url : 'http://s3-us-west-2.amazonaws.com' +req.url,
method: 'GET'};
req.pipe(request(options)).pipe(res);
}
)}
这个问题可能是,对于它从s3请求的每个资产,它将始终通过您的快速服务器,并且获取资产的负载将来自快速服务器。您可以进行开发,但不建议用于生产。
因此,对于最终部署,您可以再次放置所有“http://s3-us-west-2.amazonaws.com
”。
如果您不想以编程方式执行此操作,则可以使用charles或fiddler等代理工具。它们捕获系统中的所有流量。您可以为特定请求或要从本地而不是s3获取的请求集创建规则。