ホームページ  >  記事  >  バックエンド開発  >  Go が HTML 出力をテンプレート内のプレーン テキストとして送信するのはなぜですか?

Go が HTML 出力をテンプレート内のプレーン テキストとして送信するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-28 06:53:29985ブラウズ

Why Does Go Send HTML Output as Plain Text in a Template?

プレーン テキストとして 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」 " ファイルには次の HTML が含まれています:

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

サーバーを実行してページに移動すると、テンプレートの HTML が

 で囲まれてそのまま表示されます。タグと新しいドキュメント ラッパー。</p>
<p>この動作の理由は、応答に "Content-Type" ヘッダーが存在しないことにあります。デフォルトでは、Go は出力をプレーンテキストとして扱います。これを修正するには、テンプレートを実行する前に次の行を追加します:</p>
<pre class="brush:php;toolbar:false"><code class="go">w.Header().Set("Content-Type", "text/html")</code>

この調整により、ブラウザーは出力を HTML として正しく解釈し、適切にレンダリングします。

以上がGo が HTML 出力をテンプレート内のプレーン テキストとして送信するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。