2016-09-20 9 views
-1

У меня есть базовый сервер Go, отображающий одну страницу. Однако, когда страница загружается, она не может извлекать статические активы (style.css, app.js), потому что они продолжают визуализироваться с типом MIME «text/html» вместо их соответствующих типов.Ошибка рендеринга MIME Типы активов на сервере Golang

Я получаю эту ошибку, когда я загрузить страницу:

Ресурс истолковано как таблицу стилей, но передается с MIME тип текста/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

создавать активыHandler для обработки статических запросов на активы.

// 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