使 Python http.server 对 webp 图像使用正确的 content-type 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
根据source code it uses module 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
,它解决了我的 Linux.
上的问题
尝试 运行 一个非常简单的本地 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
根据source code it uses module 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
,它解决了我的 Linux.