私は周りを見回して、私が何のために何かを特定していません。 Goの標準ライブラリを使用してAPIを構築しています。私のリソースファイルを提供するとき、私のCSSファイルはtext/css
として送信したいときはtext/plain
として送信されます。Golang:Content-Type:text/plainでCSSファイルが送信されています
Resource interpreted as Stylesheet but transferred with MIME type text/plain: "http://localhost:3000/css/app.css".
main.go
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
}
私はtext/css
としてそれを送っています信じて:
コンソールが言って私に情報メッセージをスローします。私はこれを間違って見ていますか?
@Karrot Kakeがあなたの質問に答えました。また、[http.FileServer](https://golang.org/pkg/net/http/#FileServer)を検討し、コンテンツタイプを検出します。 – Mark
私はこれが複数形の三角形であると確信しています。私は20分間このエラーに苦しんでいます! – Karlom