プレーン テキストとして 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 サイトの他の関連記事を参照してください。