本地Python简单HTTP服务器在Windows下发送错误的.svg MIME类型,但在Linux下正常

2 投票
1 回答
1934 浏览
提问于 2025-04-17 01:09

我在Python里创建了一个简单的HTTP服务器(我没有动过do_GET这个函数)。

在Linux(Ubuntu)上,一切都运行得很好,但在Windows上,当我想在Firefox中打开.svg文件(比如 http://localhost:8000/editor.svg)时,它会问我是否要下载或保存这个文件。

之前在这个网站上有个问题提到,这是因为服务器发送了错误的MIME类型。

在Windows上,响应头的内容类型是:'application/octet-stream'。

而在Linux上,响应头的内容类型是:'image/svg+xml'。

这两个情况下使用的本地服务器完全一样。

有没有人知道我该怎么做才能解决这个问题(换句话说,就是让SVG文件发送正确的MIME类型)?我试过在SVG文件里用meta标签来指定内容,但没有帮助。

谢谢。

编辑:

真是傻,我真的需要学会更好地阅读文档。这个类(simpleHTTPServer.simpleRequestHandler)有一个extension_map属性,它是一个字典,用来将文件扩展名映射到MIME类型,这正是我需要的。

版主们,如果你们想的话,可以随意删除这个问题。

另外,也谢谢mikko的回答,它让我找到了正确的方向。

1 个回答

4

你需要使用mimetypes.add_type()这个方法。

http://docs.python.org/library/mimetypes.html

在Linux系统中,有一个全局的mimetypes配置,里面的内容是最新的。而看起来Windows系统没有这样的配置。

撰写回答