您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么需要使用http.StripPrefix访问我的静态文件?

为什么需要使用http.StripPrefix访问我的静态文件?

http.StripPrefix() 将请求的处理转发给您指定为其参数的对象,但在此之前,它会通过剥离指定的前缀来修改请求URL。

因此,例如,在您的情况下,如果浏览器(或HTTP客户端)请求资源:

/static/example.txt

StripPrefix将会剪切/static/和将修改后的请求转发到由返回的处理程序,http.FileServer()因此它将看到请求的资源是

/example.txt

Handler通过返回http.FileServer()将寻找并送达文件内容 相对 文件夹(或者更确切地说,FileSystem指定作为其参数)(指定"static"静态文件的根目录)。

现在,由于"example.txt"位于static文件夹中,因此您必须指定相对路径以获取相应的文件路径。

该示例可以在http软件包文档页面此处)中找到:

// To serve a directory on disk (/tmp) under an alternate URL
// path (/tmpfiles/), use StripPrefix to modify the request
// URL's path before the FileServer sees it:
http.Handle("/tmpfiles/",
        http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))

FileServer()被告知静态文件的根是"/tmp"。我们希望网址以开头"/tmpfiles/"。因此,如果有人要求"/tempfiles/example.txt",我们希望服务器发送文件"/tmp/example.txt"

为了实现这一点,我们必须"/tmpfiles"从URL中删除,其余的将是与根文件夹相比的相对路径"/tmp",如果我们加入,则根目录将给出:

/tmp/example.txt
其他 2022/1/1 18:15:09 有442人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶