【发布时间】:2018-05-27 11:01:02
【问题描述】:
我们刚刚将我们的一个 Web 应用程序(经典灯堆栈)从 Ubuntu 14/Apache 2.2/PHP 5.5 迁移到 Ubuntu 16/Apache 2.4/PHP 7.0。一切都很顺利。目前让我头疼的只有一个部分:
我们应用程序中的一个路由检查传入的文件请求并通过 XSendfile(第三方内容)传送该文件。文件传递的内容类型由应用程序明确设置。这意味着,例如,我们为*.html 文件附加了text/html 的内容类型。这工作非常顺利,浏览器收到了确切的内容类型。
现在,在新机器上(相同的代码和相同的文件要交付),浏览器接收到的内容类型是text/html;charset=utf-8。有一些字符集元数据附加到内容类型。
这对我们来说很糟糕,因为有些文件包含iso-8859-1 编码的内容。结果是显示的 html 文件中的编码错误。
我已对所有内容进行了三次检查。我们在 HTTP 标头中放置的内容类型是显式设置的,没有 utf-8 字符集元数据。
现在我正在检查各种 Apache2/XSendfile 特定配置,以了解有关该行为的任何提示。
有没有其他人在使用 XSendfile 的 Apache 2.4 上遇到过类似的行为?是不是,Apache 发送的内容类型比 html 元标记中的内容类型更重要?如何禁用内容类型标头中字符集元信息的自动附加?
【问题讨论】:
标签: apache utf-8 character-encoding iso-8859-1 x-sendfile