首先,您必须了解node.js默认情况下不提供任何文件。因此,您必须手动编码每个单独的请求,以便该/foo
请求从某些特定的文件或代码中生成内容。或者,您必须创建一些映射集,在其中/content/foo
告诉服务器读取服务器上的相应目录,例如/myservercontent/foo
。
而且,有各种工具可帮助您为文件的整个目录层次结构(例如express.static()
)创建此映射。但是,任何这样的映射都具有显式的根,其中所有请求都相对于某个根。您可以定义该根目录在服务器上的位置。它甚至可以是服务器的根目录(尽管出于各种原因从不建议这样做)。通常,此根目录设置为硬盘上的某个父目录,该目录仅在该父目录下包含公共Web内容。这样一来,您就永远不会造成一些随机的Web用户可以访问您不想公开的系统文件(例如HTTPs证书,数据库,服务器代码,密码文件等)的情况。 。
综上所述,node.js允许您执行几乎所有您想做的事情。如果您想访问硬盘驱动器上任意位置的随机文件(我绝对不建议这样做),则可以轻松编写node.js的代码来实现。有几种方法可以实现它。一种简单的方法是仅构造一个接受查询参数的路由,其中查询参数指定所需文件的路径,然后让该路由句柄读取该文件并返回它。这是一个巨大的安全漏洞,足以推动卡车通过,所以我永远不会推荐这样做。
相反,您真正应该做的是收集希望通过服务器提供的所有文件,并将它们放入一个安全的目录层次结构中,然后允许访问该特定目录层次结构中的文件,而不是硬盘上的其他任何位置。
现在,您已经对自己的工作进行了更多的解释,这是一个想法:
扫描本地硬盘驱动器,以识别您认为可以安全共享的所有音频文件。请务必非常小心,因为在这里的错误可能会带来很大的安全漏洞,因此您决定分享什么。由于我们不了解完整的上下文,因此您将不得不评估您在此处所做的安全风险。
收集此音频文件列表时,请将列表保存到服务器正在使用的某种数据存储中,以便您可以在以后的任何时间快速访问该列表。我建议您为每个音频文件创建一个唯一的ID,以使其将来更容易引用。
然后,您可以为远程用户提供这些音频文件的列表,然后他们可以选择一个。然后,可以将他们选择的音频文件作为播放特定音频文件的请求的一部分发送到服务器。我建议只应通过ID请求文件(出于安全原因),尽管您的用户界面可能会选择显示原始路径名(如果重要或相关的话)。
当您的服务器收到播放具有特定ID的音频文件的请求时,它可以查询其数据存储以找出哪个音频文件是具有特定ID的音频文件。这是重要的一步,因为强制客户端按ID(而不是按路径)请求文件使得客户端只能请求您之前扫描过的音频文件,并认为可以安全公开。远程客户端可以请求其他一些您不想共享的文件,因此不会存在任何漏洞。
服务器在数据存储中查找并找到具有该特定ID的音频文件后,便可以从数据存储中查找本地路径,然后可以读取音频文件并将其发送/传输到远程客户端。
例如,在第3步和第4步中,客户端可以发送如下所示的URL:
http:// someserver / play / 5934902
那就是播放ID为的音频文件的请求5934902
。然后,您的服务器将具有用于/play/:id
该ID的路由处理程序,然后执行步骤4和5。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句