Golang:CSS文件与Content-Type:text / plain一起发送

时间:2016-03-31 02:44:20

标签: css go server

我环顾四周,找不到任何具体的东西。我正在使用Go的标准库构建API。在提供我的资源文件时,当我想将RootViewController发送时,我的CSS文件将以text/plain的形式发送。

控制台向我发出一条信息消息:

text/css

main.go

Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://localhost:3000/css/app.css".

我相信我发送的是package main import ( "bufio" "log" "net/http" "os" "strings" "text/template" ) func main() { templates := populateTemplates() http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { requestedFile := req.URL.Path[1:] template := templates.Lookup(requestedFile + ".html") if template != nil { template.Execute(w, nil) } else { w.WriteHeader(404) } }) http.HandleFunc("/img/", serveResource) http.HandleFunc("/css/", serveResource) log.Fatal(http.ListenAndServe(":3000", nil)) } func serveResource(w http.ResponseWriter, req *http.Request) { path := "public" + req.URL.Path var contentType string if strings.HasSuffix(path, ".css") { contentType = "text/css" } else if strings.HasSuffix(path, ".png") { contentType = "image/png" } else { contentType = "text/plain" } f, err := os.Open(path) if err == nil { defer f.Close() w.Header().Add("Content Type", contentType) br := bufio.NewReader(f) br.WriteTo(w) } else { w.WriteHeader(404) } } func populateTemplates() *template.Template { result := template.New("templates") basePath := "templates" templateFolder, _ := os.Open(basePath) defer templateFolder.Close() templatePathRaw, _ := templateFolder.Readdir(-1) templatePaths := new([]string) for _, pathInfo := range templatePathRaw { if !pathInfo.IsDir() { *templatePaths = append(*templatePaths, basePath+"/"+pathInfo.Name()) } } result.ParseFiles(*templatePaths...) return result } 。我看错了吗?

1 个答案:

答案 0 :(得分:7)

应用程序在内容类型标题名称中缺少“ - ”。将代码更改为:

    w.Header().Add("Content-Type", contentType)