【问题标题】:How to call static HTML files如何调用静态 HTML 文件
【发布时间】:2020-08-05 01:01:29
【问题描述】:

我创建了一个包含 index.html 文件的静态文件夹,在我的 go 文件中,我写道:

package main

import (
    "net/http"
)

func main() {
    http.Handle("/", http.FileServer(http.Dir("./static")))

    http.ListenAndServe(":8482", nil)
}

在探索http://localhost:8482/时效果很好

我试着把代码写成:

http.Handle("/static", http.FileServer(http.Dir("./static")))

但在探索 http://localhost:8482/static 时失败,出现 404 错误

【问题讨论】:

  • 试试:http://localhost:8482/static/ - 最后是/
  • @Vusal 同样的事情 :(
  • 当前目录中的static 文件夹是您启动应用程序的位置吗?也可以试试绝对路径。
  • @HasanAYousef 我试过你的代码,它可以工作。可能是目录路径不正确
  • @icza 我添加了显示我的完整路径的屏幕截图

标签: go


【解决方案1】:

http.Handle("/static", http.FileServer(http.Dir("./static"))) 简单的意思是,“当有人连接到.../static 时,将整个请求重新路由到根目录为./static 的文件服务器”。

但是,URL 会按原样传递给文件服务器。也就是说,文件服务器接收到用户的请求,认为用户在("./static")根目录下寻找一个名为“static”的文件。

事实上,如果您只是在“./static”目录中放置一个名为“static”的文件,则转到.../static 将提供该文件。

所以修复需要两件事:

  1. 将路径前缀改为“/static/”而不是“/static”,这样静态目录中的所有文件都可以重新路由到文件服务器(而不仅仅是“/static”请求)
  2. 在将请求传递给文件服务器之前,从请求中去除“/static/”路径前缀。

像这样:

http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static"))))

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 2019-09-28
  • 2019-08-14
相关资源
最近更新 更多