zoukankan      html  css  js  c++  java
  • ContentType问题总结

    web服务器在向浏览器发送任何内容的时候,都会先发送相应的header头。无论是html文本,还是gif,jpg等文件。

    header信息里面一般会包含:

    Date,Server,Last-Modified,Etag,Content-Length,Content-Type等等信息。

    深入了解header里面的信息很有必要,因为这是浏览器是否使用浏览器缓存文件,及能否正确解析文件的基础。

    最近遇到页面的显示问题,都是和Content-Type相关的。

    问题1:charset,页面要使用shift_jis编码。

    因为web服务器默认的Charset不是shift_jis,这时候即使你的html里面的meta正确设置了:

    <meta http-equiv="content-type" content="application/xhtml+xml; charset=Shift_JIS" />

    页面还是会显示乱码。原因是web服务器发送的header信息为:

    Content-Type:text/html; charset=utf-8

    解决办法1:

    在apache中进行配置:AddDefaultCharset shift_jis

    即设置文本的默认编码为shift_jis。

    解决办法2:

    通过php设置:header('Content-Type:text/html; charset=shift-jis');

    问题2:页面规范为xhtml 1.0

    首先,xhtml 1.0对应的content type为application/xhtml+xml。因此页面中meta设置如下:

    <meta http-equiv="content-type" content="application/xhtml+xml; charset=Shift_JIS" />
    但是即使如此,发现在手机模拟器中(这是个手机网站项目),页面的样式无法正确显示。

    问题的原因还是出现在header信息中的Content-Type上。通过YSlow查看得到:

    Content-Type:text/html; charset=shift-jis

    这边的 text/html 会导致手机浏览器无法按照XHTML1.0解析html页面。

    解决方法1:

    修改apache配置。

    apache关于文件类型的content type定义都放在:mime.types文件中。 在mime.types中可以看到:

    text/html   html htm

    这边的意思是:对于.html和.htm格式的文件,发送的content type为text/html ,因此我们只要修改为:

    application/xhtml+xml  html htm

    即可解决在 .html 和 .htm文件中解析xhtml 1.0问题,但这会影响apache的全局配置。为了消除对其他项目的影响,因此在该项目的虚拟目录增加设置:

    AddType application/xhtml+xml html

    这样子,对于 .html 格式的文件,服务器发送的content type就都是“application/xhtml+xml ”了,如果要支持其他格式的文件,设置的方法也类似。

     

    解决方法2:

    将使用XHTML1.0规范的静态文件都改为 .xhtml 或者 .xht 格式。因为事实上apache中的mime.types已经有如下定义:

    application/xhtml+xml  xhtml xht

    解决方法3:

    通过php设置:

    header('Content-Type:application/xhtml+xml; charset=shift-jis');

    总结:浏览器解析页面的时候,优先参照的是header头信息里面的设置,之后才是html页面中的meta设置。如果出现页面乱码或者文档无法正常解析,应该从header头信息里面去找找原因。

    如何查看浏览器接收到的文件的header信息呢?推荐使用Yslow!

  • 相关阅读:
    软件体系架构复习要点
    Operating System on Raspberry Pi 3b
    2019-2020 ICPC North-Western Russia Regional Contest
    2019 ICPC ShenYang Regional Online Contest
    2019 ICPC XuZhou Regional Online Contest
    2019 ICPC NanChang Regional Online Contest
    2019 ICPC NanJing Regional Online Contest
    Codeforces Edu Round 72 (Rated for Div. 2)
    Codeforces Round #583 (Div.1+Div.2)
    AtCoder Beginning Contest 139
  • 原文地址:https://www.cnblogs.com/rethink/p/1595989.html
Copyright © 2011-2022 走看看