如何解决使 Python http.server 为 webp 图像使用正确的内容类型标头
尝试运行一个非常简单的本地 python 网络服务器来为一个目录提供一些不同格式的图像,如 png、jpg 和 webp。
python3 -m http.server -d /path/webdir 8090
不幸的是,webp 图像使用了错误的标头:Content-type: application/octet-stream
而不是 Content-type: image/webp
我该如何解决这个问题? (仍然使用oneliner启动python webserver)
是的,我知道 php
做得很好:
php -t /path/webdir -S localhost:8090
解决方法
基于source code,它使用模块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/mime.types'
]
如果我在这些文件之一中添加行 - 即。 /etc/mime.types
image/webp webp
然后mimetypes.guess_type('name.webp')
给我
('image/webp',None)
我认为它应该可以解决您的服务器的问题。
编辑:
我在 python3 -m http.server
中添加行之前和之后测试了 /etc/mime.types
,它解决了我的 Linux 上的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。