2016-09-20 4 views
-1

기본 Go 서버에서 단일 페이지를 렌더링했습니다. 그러나 페이지가로드되면 각 유형 대신 MIME 유형 'text/html'로 계속해서 렌더링되기 때문에 정적 애셋 (style.css, app.js)을 검색 할 수 없습니다.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

관련 문제