ホームページ > バックエンド開発 > Golang > Go HTML 出力がプレーン テキストとして表示されるのはなぜですか?

Go HTML 出力がプレーン テキストとして表示されるのはなぜですか?

DDD
リリース: 2024-10-29 20:39:29
オリジナル
481 人が閲覧しました

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 がレンダリングされずにそのまま表示されることがわかります。これは、応答に Content-Type ヘッダーが不足しているためです。このヘッダーは text/html に設定する必要があります。

この問題を解決するには、テンプレートを実行する前に次の行を追加する必要があります:

<code class="go">w.Header().Set("Content-Type", "text/html")</code>
ログイン後にコピー

このヘッダーは、応答に HTML コンテンツが含まれていることをブラウザーに通知し、それに応じて HTML をレンダリングできるようにします。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート