繁体   English   中英

使 Python http.server 对 webp 图像使用正确的内容类型 header

[英]Make Python http.server use correct content-type header for webp images

尝试运行一个非常简单的本地 python 网络服务器来提供一个目录,其中包含一些不同格式的图像,如 png、jpg 和 webp。

python3 -m http.server -d /path/webdir 8090

不幸的是,webp 图像使用错误的 header: Content-type: application/octet-stream而不是Content-type: image/webp

我怎样才能解决这个问题? (仍然使用 oneliner 来启动 python 网络服务器)

是的,我知道php做得很好:

 php -t /path/webdir -S  localhost:8090

基于源代码,它使用模块mimetypes来猜测类型

import mimetypes  

print( mimetypes.guess_type('name.webp') )

结果

(None, None)

该模块使用系统中的一些文件来猜测类型

print( mimetypes.knownfiles )

Linux Mint 20 的结果(基于 Ubuntu 20.04)

[
 '/etc/mime.types', 
 '/etc/httpd/mime.types', 
 '/etc/httpd/conf/mime.types', 
 '/etc/apache/mime.types', 
 '/etc/apache2/mime.types', 
 '/usr/local/etc/httpd/conf/mime.types', 
 '/usr/local/lib/netscape/mime.types', 
 '/usr/local/etc/httpd/conf/mime.types', 
 '/usr/local/etc/mime.types'
]

如果我在这些文件之一中添加行 - 即。 /etc/mime.types

image/webp                  webp

然后mimetypes.guess_type('name.webp')给了我

('image/webp', None)

我认为它应该解决您的服务器的问题。


编辑:

我在 /etc/mime.types 中添加行之前和之后测试python3 -m http.server /etc/mime.types解决了我的 Linux 的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM