2016-09-20 16 views
-1

我有一個基本的Go服務器呈現單個頁面。但是,當頁面加載時,它不能檢索靜態資產(style.css,app.js),因爲它們保持使用MIME類型「text/html」而不是它們各自的類型進行呈現。在Golang服務器中呈現MIME類型的資產時出錯

資源解釋爲樣式表,但使用MIME類型text/html轉移:

當我加載的頁面我得到這個錯誤「http://localhost:8080/static/style.css

我知道這個問題已經做HTTP標題並設置適當的Content-Type。但是,我不確定如何爲頁面本身檢索的資源執行此操作。任何人都可以幫我解決這個問題嗎?

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 
} 

回答

2

創建一個assetsHandler來處理靜態資產請求。

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

添加Content-Type Header基於資產的後綴:

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

.css - >text/css

.js - >text/javascript

...

+0

如何處理資產要求?不知道如何路由。 – Scorpio750

+0

給我的答案增加一個例子。 – jsxqf

+0

謝謝,我會試試看。 – Scorpio750

相關問題