You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需继承类,为SimpleHTTPRequestHandler添加Content-Type头

解决方法

方案一:手动添加CSS的Content-Type映射到extensions_map

修改代码中处理extensions_map的部分,在原有基础上补充CSS的类型映射:

#!/usr/bin/env python
from functools import partial
from http.server import SimpleHTTPRequestHandler, test
import os

HTTP_DIR = os.getcwd()

# 先给原有扩展映射添加UTF-8 charset
ext_map = {k: v + ';charset=UTF-8' for k, v in SimpleHTTPRequestHandler.extensions_map.items()}
# 手动加入CSS的Content-Type配置
ext_map['.css'] = 'text/css;charset=UTF-8'
# 赋值回类属性
SimpleHTTPRequestHandler.extensions_map = ext_map

test(HandlerClass=partial(SimpleHTTPRequestHandler, directory=HTTP_DIR), port=8000, bind='0.0.0.0')

方案二:让mimetypes模块正确识别CSS类型

如果不想手动维护扩展映射,可在代码开头注册CSS的MIME类型:

#!/usr/bin/env python
from functools import partial
from http.server import SimpleHTTPRequestHandler, test
import os
import mimetypes

# 强制注册CSS的MIME类型
mimetypes.add_type('text/css', '.css')

HTTP_DIR = os.getcwd()
SimpleHTTPRequestHandler.extensions_map = {k: v + ';charset=UTF-8' for k, v in SimpleHTTPRequestHandler.extensions_map.items()}

test(HandlerClass=partial(SimpleHTTPRequestHandler, directory=HTTP_DIR), port=8000, bind='0.0.0.0')
原因分析

SimpleHTTPRequestHandler的extensions_map默认只包含压缩格式的映射(就是你打印出的那几个条目),绝大多数文件类型的Content-Type是通过mimetypes.guess_type()方法自动获取的。你遇到的问题是CSS类型未被mimetypes正确识别,而JS类型刚好能被正常解析。

两种方案都不需要继承扩展类,属于轻量解决方式:

  • 方案一直接把CSS映射加入extensions_map,优先级高于mimetypes的自动识别
  • 方案二强制让mimetypes模块识别CSS的正确类型,适合需要支持更多未知类型的场景

内容的提问来源于stack exchange,提问作者JoSSte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:32:11