apache httpd服务器返回html和css content-type错误
Posted On 2016年1月6日
apache httpd服务器返回html和css content-type错误,会导致浏览器工作不正常。具体的现象就是,html 代码被浏览器当作纯文本的内容直接显示,而不会去渲染。 css的代码也会当作纯文本的内容,下载后并不会应用样式到html代码。
举个例子,当我打开 http://www.hissummer.com/index.html 时,返回的是
<html>xxx</html> 给用户。
问题的发生经过:
今日准备升级下bbs, 因为升级的版本跨度比较大,为了防止出现严重问题,在本地先模拟以下操作过程。本地的apache httpd server一直在用,之前并没有发现什么异常情况。 今天刚把环境部署过来, 就发现一切都不正常。 错乱的排版,还有一段html代码直接当作文字显示到页面。 让人崩溃,千万只草拟马呼啸而过。
仔细看了下请求的内容,发现服务器在返回 html代码和css代码时,返回的response content-type 都是 text/plain。 所以浏览器认为是纯文本,则没有做任何加工处理。
解决办法:
具体发生的原因实在是无法找到(怀疑是因为配置httpserver导致出现的副作用)。 所以只能曲线救国。
即/etc/mime.types 中把缺少的这些定义,加上去。
例如我添加上如下几行, 重启下 httpd server, 那么http服务器根据文件名的后缀就会正确返回对应的content-type 了。
text/html html htm shtml
text/css css
添加完毕后,我们再次强制刷新浏览器 contrl-F5, 可以看到http 服务器返回的content-type正确了。
HTTP/1.1 200 OK Date: Tue, 05 Jan 2016 15:45:24 GMT Server: Apache/2.2.15 (CentOS) Last-Modified: Thu, 17 Jul 2014 22:15:35 GMT ETag: "c0f1b-7e16-4fe6afad38fc0" Accept-Ranges: bytes Content-Length: 32278 Connection: close Content-Type: text/plain 修改后可以看到返回的content-type变为了 Content-Type: text/css HTTP/1.1 200 OK Date: Tue, 05 Jan 2016 15:45:24 GMT Server: Apache/2.2.15 (CentOS) Last-Modified: Thu, 17 Jul 2014 22:15:35 GMT ETag: "c0f1b-7e16-4fe6afad38fc0" Accept-Ranges: bytes Content-Length: 32278 Connection: close Content-Type: text/css
此篇文章已被阅读3481 次