Caddy2:如何设置文件扩展名的MIME类型和内容处置?

问题描述 投票:0回答:1

配置/覆盖某些 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 上则来自注册表。

mime-types httpserver content-disposition caddy caddyfile
1个回答
1
投票

更新回复

谢谢@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
}
© www.soinside.com 2019 - 2024. All rights reserved.