>  기사  >  백엔드 개발  >  My Go HTML 출력이 일반 텍스트로 표시되는 이유는 무엇입니까?

My Go HTML 출력이 일반 텍스트로 표시되는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-29 20:39:29439검색

Why is My Go HTML Output Displayed as Plain Text?

Go의 HTML 출력 해석 문제 설명

Go에서 HTTP를 통해 HTML 출력을 보내면 출력이 일반 텍스트로 해석되는 경우가 있습니다. 이는 응답에 콘텐츠 유형을 지정하는 적절한 헤더가 없을 때 발생합니다.

다음 코드를 고려하세요.

<code class="go">requestHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    t := template.New("test")
    t, _ := template.ParseFiles("base.html")
    t.Execute(w, "")
})

server := &http.Server{
    Addr:           ":9999",
    Handler:        requestHandler,
    ReadTimeout:    10 * time.Second,
    WriteTimeout:   10 * time.Second,
    MaxHeaderBytes: 1 << 20,
}

log.Fatal(server.ListenAndServe())

다음을 포함하는 base.html 사용:

<code class="html"><DOCTYPE html>
<html>
    <body>
        base.html
    </body>
</html></code>

제공된 페이지를 로드하면 HTML이 렌더링되는 대신 그대로 표시되는 것을 볼 수 있습니다. 이는 응답에 text/html로 설정되어야 하는 Content-Type 헤더가 없기 때문입니다.

이 문제를 해결하려면 템플릿을 실행하기 전에 다음 줄을 추가해야 합니다.

<code class="go">w.Header().Set("Content-Type", "text/html")</code>

이 헤더는 응답에 HTML 콘텐츠가 포함되어 있음을 브라우저에 알리고 그에 따라 HTML을 렌더링할 수 있도록 합니다.

위 내용은 My Go HTML 출력이 일반 텍스트로 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.