在意识到 http 包有一个内置的 ServeFile 方法之前,我或多或少地实现了一个静态处理程序,如下所示:
func StaticHandler(w http.ResponseWriter, r *http.Request) {
filename := mux.Vars(r)["static"] // using gorilla/mux
f, err := os.Open(fmt.Sprintf("%v/static/%v", webroot, filename))
if err != nil {
http.NotFound(w, r)
return
}
defer f.Close()
io.Copy(w, f)
}
例如,以这种方式链接我的样式表和图像:
<img href="/image.jpg" />
<link rel="stylesheet" type="text/css" href="/stylesheet.css">
这工作得很好,除了一件事:我的链接样式表没有被浏览器应用(在 Chrome、Firefox、Midori 中测试)。可以提供样式表(访问 MYSITE/stylesheet.css 会显示 css 纯文本)并且图像会在页面中正常加载,但我的页面都没有任何样式。
关于为什么的任何想法?