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 是逐字顯示的,而不是渲染的。這是因為回應缺少 Content-Type 標頭,應將其設為 text/html。
要解決此問題,您需要在執行模板之前添加以下行:
<code class="go">w.Header().Set("Content-Type", "text/html")</code>
此標頭通知瀏覽器回應包含 HTML 內容,從而允許瀏覽器相應地呈現 HTML。
以上是為什麼我的 Go HTML 輸出顯示為純文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!