2016-03-31 13 views
2

私は周りを見回して、私が何のために何かを特定していません。 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としてそれを送っています信じて:

コンソールが言って私に情報メッセージをスローします。私はこれを間違って見ていますか?

+0

@Karrot Kakeがあなたの質問に答えました。また、[http.FileServer](https://golang.org/pkg/net/http/#FileServer)を検討し、コンテンツタイプを検出します。 – Mark

+0

私はこれが複数形の三角形であると確信しています。私は20分間このエラーに苦しんでいます! – Karlom

答えて

7

コンテンツタイプヘッダー名に " - "がありません。コードを次のように変更してください。

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

ありがとうございました。 –

関連する問題