
使用 http.server.SimpleHTTPRequestHandler 自定义服务器时,若未调用 self.end_headers(),响应头将不会被发送,导致浏览器无法识别 Content-Type,从而以纯文本形式显示 HTML 源码。
使用 `http.server.simplehttprequesthandler` 自定义服务器时,若未调用 `self.end_headers()`,响应头将不会被发送,导致浏览器无法识别 `content-type`,从而以纯文本形式显示 html 源码。
在 Python 的 http.server 模块中,SimpleHTTPRequestHandler 提供了构建轻量级 HTTP 服务器的基础能力,但其响应流程需严格遵循 HTTP 协议规范:响应状态行 → 响应头 → 空行(CRLF)→ 响应体。关键点在于:send_header() 仅将头部字段缓存到内部缓冲区,并不会实际写入网络流;必须显式调用 self.end_headers() 才会输出所有已设置的头部、插入分隔空行,并完成头部阶段。
在原始代码中,虽然设置了 'Content-Type' 和 'Content-Length',但遗漏了 self.end_headers(),导致浏览器收不到任何响应头(仅收到无头的 HTML 字节流),因此默认按 text/plain 解析并显示为源码。
✅ 正确做法如下:
send_header('Content-Length', ...)
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











