Apache 2.4 中的 DefaultType 指令

Apache 2.4 中的 DefaultType 指令

我们刚刚从 Apache 2.0.53 迁移到 Apache 2.4,对于 html/js/css 文件等一切都运行良好。

但我们的服务器上有许多端点会返回纯文本。例如,一个端点会返回 -

RIL~Reliance Industries~1234~abcd

默认情况下,这些响应不包含任何“内容类型”,但我期望“text/plain”

在 Apache 2.0.53 中我们使用

DefaultType text/plain

但在 Apache 2.4 中,此指令已被禁用。(参考:http://httpd.apache.org/docs/2.4/mod/core.html#defaulttype

我有大量请求,想要一个可以应用于我的 apache 的通用解决方案,这样如果没有提供内容类型,它应该发送“text/plain”

请问有什么建议吗?

答案1

一个解决方案是使用将标头ForceType text/plain设置Content-Typetext/plain。这将使所有回应然而返回text/plain

使用时的一个非常具体的问题ForceType是它会破坏 的mod_mime文件扩展名检测。例如,请求的带有.css.js扩展名的文件不会将其Content-Type设置为text/css或 ,application/javascript而是将其设置为text/plain:这可能不是您想要的。

正如所指出的Apache 邮件列表上的一个链,之所以DefaultType被删除,是因为他们现在建议浏览器进行嗅探以确定内容类型。如果您从 apache 2.2 升级到 2.4,那么您应该尝试直接使用它而不将其重新添加。

答案2

在全局级别(意味着在所有请求上)使用 ForceType 可能会破坏其他东西,如 css、js...

这是在提供无扩展名的 html 内容路径时常见的问题(.html)

简化为名称中没有点:

<FilesMatch "^[^.]+$">
    ForceType text/html
</FilesMatch>

只检查最后 5 个字符可能会更聪明:

<FilesMatch "^[^.]{0,5}$">
    ForceType text/html
</FilesMatch>

答案3

找到解决方案。

ForceType text/plain

这对我有用....

相关内容