apache httpd服务器返回html和css content-type错误

Life is short , play more!
本文来自lihao's Blog,转载请注明。

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

 


发表评论

电子邮件地址不会被公开。 必填项已用*标注