Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在NodeJS/AngularJS应用程序中缓存远程图像?_Javascript_Angularjs_Node.js_Caching - Fatal编程技术网

Javascript 如何在NodeJS/AngularJS应用程序中缓存远程图像?

Javascript 如何在NodeJS/AngularJS应用程序中缓存远程图像?,javascript,angularjs,node.js,caching,Javascript,Angularjs,Node.js,Caching,情景: 用户发布到网站的链接 一个小AngularJS服务获取一个预览,包括一个图像 此信息(包括图像的远程URL)将复制到隐藏表单,并在用户单击提交时发送到服务器。 现在我必须下载图像到我的服务器上进行预览。否则,我将热链接他们,这是不好的,也可能导致问题以后。 由于跨源策略,我想这只能在服务器端完成 到目前为止,我的想法是创建一个小API,在这里我将URL传递给图像,服务器检查本地副本是否存在,如果没有,则动态下载一个 http://example.com/staticapi/v1/get?

情景:

用户发布到网站的链接 一个小AngularJS服务获取一个预览,包括一个图像 此信息(包括图像的远程URL)将复制到隐藏表单,并在用户单击提交时发送到服务器。 现在我必须下载图像到我的服务器上进行预览。否则,我将热链接他们,这是不好的,也可能导致问题以后。 由于跨源策略,我想这只能在服务器端完成

到目前为止,我的想法是创建一个小API,在这里我将URL传递给图像,服务器检查本地副本是否存在,如果没有,则动态下载一个

http://example.com/staticapi/v1/get?img_url=ENCODED-IMG-URL
我不喜欢这个想法,因为恶意用户可能会用URL轰炸这个系统

另一种方法是暂时保存远程URL,并让后台作业下载尚未处理的任何远程图像


你会如何处理?

我想,你需要考虑POST请求作为发布图像数据的手段。GETAPI没有坏处,但post很好。也就是说,检查攻击的逻辑随着实现的不同而不同。一方面,连续的IP请求需要通过验证码之类的安全措施进行监控和询问。我不同意。如果每次调用都让服务器下载一个外部资源,那么GET API可能是有害的。这就像是邀请DDOS攻击。由于它将通过Javascript从客户端调用,因此我无法限制对某些IP的访问。验证码可能是一个选项,API必须监视访问并返回一个状态,使前端请求验证码。但这似乎过于复杂了。也许使用后台作业是最简单的方法。同意,我提到了GETAPI在服务器为您下载图像时是有害的。那还不错吧?不管怎样,如果我错了,请纠正我。您可以考虑的另一件事是,会话请求,它将告诉特定会话已经请求资源保存多少次,计数和上次请求时间。