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 中国語 Web サイトの他の関連記事を参照してください。