我们刚刚从 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-Type
为text/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
这对我有用....