2016-09-20 1 views
-1

Ich habe einen einfachen Go-Server, der eine einzelne Seite rendert. Wenn die Seite jedoch geladen wird, können statische Assets (style.css, app.js) nicht abgerufen werden, da sie weiterhin mit dem MIME-Typ 'text/html' statt ihrer jeweiligen Typen gerendert werden.Fehler beim Rendern von MIME-Typen von Assets im Golang-Server

Ich bekomme diese Fehlermeldung, wenn ich die Seite zu laden:

Ressource als Stylesheet interpretiert, sondern mit MIME-Typ text/html übertragen: „http://localhost:8080/static/style.css

Ich weiß, das Thema zu tun hat, mit die HTTP-Header und setzen den entsprechenden Content-Type. Ich bin mir jedoch nicht sicher, wie das für Assets zu tun ist, die die Seite selbst abruft. Kann mir jemand dabei helfen?

func renderTemplate(w http.ResponseWriter, r *http.Request, msg *Message, path string) { 
    t, err := template.ParseFiles(path) 
    if err != nil { 
     http.NotFound(w, r) 
    } 
    // problem is here I think 
    err = t.Execute(w, msg) 
    if err != nil { 
     fmt.Println("Error writing to response writer\n\b", err) 
    } 
    return 
} 

func mainHandler(w http.ResponseWriter, r *http.Request) { 
    renderTemplate(w, r, &Message{Title: "What the Fuck is Open?", Text: "Would you like to sort by prominence or distance?"}, HOME) 
    return 
} 

Antwort

2

Erstellen Sie einen AssetsHandler, um statische Anfragen zu bearbeiten.

// if you are using grilla/mux 
router := mux.NewRouter() 
router.HandleFunc("/static/"+`{path:\S+}`, AssetsHandler) 

Content-Type Header add on Assets' Suffix basiert:

w.Header().Set("Content-Type", "text/css") 

.css ->text/css

.js ->text/javascript

...

+0

Wie gehe ich mit den Vermögenswert Anfragen? Ich bin mir nicht sicher, wie ich das weiterleiten soll. – Scorpio750

+0

fügen Sie ein Beispiel zu meiner Antwort hinzu. – jsxqf

+0

danke, ich werde das versuchen. – Scorpio750

Verwandte Themen