资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 面试经验 > 面试问答

高朗 使用什么?http.ServeFile(..)还是http.FileServer(..)?

面试问答 更新时间: 发布时间: 计算机考试归档 最新发布

高朗 使用什么?http.ServeFile(..)还是http.FileServer(..)?

主要区别在于实际上

http.FileServer
可以将HTTP前缀与文件系统进行几乎1:1的映射。用简单的英语来说,它提供了整个目录路径。以及所有的孩子

假设您有一个名为的目录,

/home/bob/static
并且您具有以下设置:

fs := http.FileServer(http.Dir("/home/bob/static"))http.Handle("/static/", http.StripPrefix("/static", fs))

您的服务器将接受的请求,

/static/foo/bar
并提供
/home/bob/static/foo/bar
(或404)处的任何内容

相反,它

ServeFile
是一个较低级别的帮助程序,可用于实现类似于FileServer的功能,或实现自己的可能潜在的麻烦,以及许多其他事情。它只是获取命名的本地文件并通过HTTP连接发送它。就其本身而言,它不会提供整个目录的前缀(除非您编写了一个类似于FileServer进行查找的处理程序)

注意 :天真地为文件系统提供服务是一种潜在的危险(有可能会脱离根目录树),因此,我建议除非您 真的
知道自己在做什么,否则请使用

http.FileServer
并使用其中
http.Dir
包括的检查以确保人们可以不要脱离FS,
ServeFile
事实并非如此。

附录
不幸的是,您的第二个问题,即如何执行自定义的NotFound处理程序,并不容易回答。

serveFile
正如您所注意到的那样,由于这是从内部函数调用的,因此没有超级容易的地方可以攻入该函数。可能会有一些偷偷摸摸的事情,例如用您自己的
ResponseWriter
方法拦截响应,从而拦截404响应代码,但我将把练习留给您。



转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/471066.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【高朗 使用什么?http.ServeFile(..)还是http.FileServer(..)?】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2