本地Python简单HTTP服务器在Windows下发送错误的.svg MIME类型,但在Linux下正常
我在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系统没有这样的配置。