配置/覆盖某些 MIME 类型的处理方式是什么?
例如,在默认配置下,Python 文件 (
.py
) 会使用 Content-disposition": attachment
来打开文件保存对话框,而不是在浏览器中显示内联纯文本。
我已经确定了一种可能的方法:
@py {
path *.py
}
header @py Content-Type text/plain
虽然这有效,但它看起来更像是一种黑客攻击,而不是添加/修改 mime 类型,因为它只是根据子字符串匹配设置标头。这是唯一可能的方法吗?
什么定义了特定 MIME 类型应内联提供或具有
"Content-disposition": attachment
? caddy 是否公开了一种简单的方法来配置 MIME 类型的处理方式?
.py
文件的正确 MIME 类型是 application/x-python-code
或 text/x-python
。如何配置 caddy 将这些类型视为内联纯文本,而不添加 Content-disposition": attachment
标头?强制 text/plain
是一种解决方法,但我假设有一种更干净的方法来做到这一点。
更新:进一步仔细阅读 caddy 文档,发现 caddy 依赖于 golang 而不是有限的 MIME 类型集,然后使用特定于操作系统的全局 MIME 类型进一步扩展。
/etc/mime.types
、/etc/apache2/mime.type
等,或者如果在 Windows 上则来自注册表。
谢谢@ccpizza
您可以通过对扩展名匹配应用一些正则表达式来做得更好。此外,如果默认值正确,则无需指定 mime 类型。所以像这样的东西也同样有效:
example.com {
root * "/path/to/files/"
@inlineFiles {
path ^.*\.(py|mp4|ps1)$
}
header @inlineFiles {
Content-Disposition inline
}
file_server {
browse
}
}
尝试这样的事情
doma.in {
root * "/path"
@py {
path *.py
}
header @py {
Content-Type text/x-python
Content-Disposition inline
}
file_server {
browse
}
}
如果您想添加 mp4 文件,只需添加另一个块,如下所示:
@mp4 {
path *.mp4
}
header @mp4 {
Content-Type video/mp4
Content-Disposition inline
}