如何用golang实现返回HTML源代码的响应?
- 内容介绍
- 文章标签
- 相关推荐
本文共计938个文字,预计阅读时间需要4分钟。
使用`http.ResponseWriter`写入字符串时,直接写入字符即可。但务必设置`Content-Type`为`text/; charset=utf-8`,否则浏览器可能将内容当作纯文本或乱码显示。
常见错误是只写 w.Write([]byte(htmlStr)) 却漏掉 header 设置——这时候 Chrome 可能显示源码而非渲染页面,Network 面板里看 Response Headers 会发现 Content-Type: text/plain; charset=utf-8(Go 默认值)。
- 务必在
w.Write()前调用w.Header().Set("Content-Type", "text/html; charset=utf-8") - 如果 HTML 字符串含中文,
charset=utf-8不可省;不加可能触发 IE/旧 Edge 的编码自动探测失败 - 不要用
fmt.Fprintf(w, "%s", htmlStr)替代w.Write(),前者多一层格式化开销,且对含%的 HTML(如 CSS 中的background: linear-gradient(...))会 panic
gin 框架里怎么返回 raw HTML 字符串
gin 默认的 c.String() 和 c.Data() 都会设 text/plain,不能直接用。得手动控制 header + body。
本文共计938个文字,预计阅读时间需要4分钟。
使用`http.ResponseWriter`写入字符串时,直接写入字符即可。但务必设置`Content-Type`为`text/; charset=utf-8`,否则浏览器可能将内容当作纯文本或乱码显示。
常见错误是只写 w.Write([]byte(htmlStr)) 却漏掉 header 设置——这时候 Chrome 可能显示源码而非渲染页面,Network 面板里看 Response Headers 会发现 Content-Type: text/plain; charset=utf-8(Go 默认值)。
- 务必在
w.Write()前调用w.Header().Set("Content-Type", "text/html; charset=utf-8") - 如果 HTML 字符串含中文,
charset=utf-8不可省;不加可能触发 IE/旧 Edge 的编码自动探测失败 - 不要用
fmt.Fprintf(w, "%s", htmlStr)替代w.Write(),前者多一层格式化开销,且对含%的 HTML(如 CSS 中的background: linear-gradient(...))会 panic
gin 框架里怎么返回 raw HTML 字符串
gin 默认的 c.String() 和 c.Data() 都会设 text/plain,不能直接用。得手动控制 header + body。

