`
#rethink#
  • 浏览: 47462 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Content-Type问题总结

阅读更多

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!

分享到:
评论

相关推荐

    Content-Type的一张表

    我找了好久”暗示这张表可能是对`Content-Type`全面且实用的总结,具有较高的参考价值。 首先,我们来了解`Content-Type`的基本概念。`Content-Type`是HTTP头字段的一部分,它告诉服务器和客户端(通常是浏览器)...

    Go-依赖Content-Typeheader自动地解析request.Body

    总结,Go语言中,依赖`Content-Type`头解析`request.Body`涉及对HTTP协议的理解、对MIME类型的识别以及使用相应的标准库。通过正确处理不同类型的`Content-Type`,我们可以确保服务器能够准确地解析和处理来自客户端...

    文件下载及web文件的contentType类型大全

    本文将详细介绍如何实现文件下载功能以及不同文件类型的`Content-Type`设置。 #### 一、文件下载的基本实现 文件下载的核心在于通过HTTP响应将文件内容发送给客户端,并且通过设置特定的HTTP头部来告诉浏览器应该...

    使用axios请求接口,几种content-type的区别详解

    在使用axios进行API请求时,`Content-Type`头字段是一个非常关键的设置,它定义了发送的数据格式。本文将详细讲解几种常见的`...在进行API请求时,确保`Content-Type`与数据格式匹配,是避免接口通信问题的关键。

    Django组件content-type使用方法详解

    Django 提供了一个强大的工具——`content-type`,它可以有效地帮助我们处理多表关联的问题。 #### 一、Content-Type 组件简介 `content-type` 是 Django 的一个重要特性,它允许你以一种通用的方式与模型对象进行...

    header中Content-Disposition的作用与使用方法

    总结来说,Content-Disposition在HTTP响应中是一个非常有用的特性,特别是在文件下载场景中。通过合理地设置Content-Disposition头信息,开发者可以精确地控制用户代理处理内容的方式,确保用户能够以期望的形式获得...

    VB简体精简版,仅仅6。39M

    ### 总结 VB简体精简版以其小巧的体积、本地化的界面以及保留的核心功能,为中文开发者提供了一个理想的编程环境。无论是作为学习工具还是用于实际项目的开发,精简版都能在满足基本需求的同时,保持高效的性能表现...

    Content-Disposition使用方法和注意事项

    总结,了解Content-Disposition对Web开发者来说至关重要,尤其在处理文件下载和在线预览时。掌握其用法和注意事项,能够帮助开发者创建更安全、用户体验更好的Web应用。无论是新手还是经验丰富的开发者,理解这些...

    Web开发关于UTF-8的问题总结.docx

    以下是对Web开发中遇到的UTF-8问题的详细总结: 1. HTML页面转UTF-8编码问题: - 在HTML文件的部分,在标签之前添加`&lt;meta&gt;`标签,指定页面内容的字符集为UTF-8: `&lt;meta http-equiv="Content-Type" content=...

    常见的四种POST 提交数据方式(小总结)

    本文将重点探讨四种常见的POST提交数据的方式,这些方式主要与Content-Type和消息主体相关。 1. **application/x-www-form-urlencoded**:这是最标准且最常见的POST数据提交方式。当浏览器的HTML表单没有设置`...

    上传绕过WAF的15中姿势

    根据提供的标题、描述以及部分上下文内容,我们可以总结并扩展出关于“上传绕过WAF”的15种方法。这是一篇围绕如何绕过Web应用防火墙(WAF)进行文件上传的技术文章,旨在帮助安全研究人员和技术人员了解当前绕过...

    浏览器不解析HTML代码,浏览器访问网页直接显示HTML代码,而不是将HTML代码解析出来形成网页. 怎么解决.zip

    总结来说,当浏览器不解析HTML代码而直接显示代码时,通常是因为服务器在响应中没有正确设置"Content-Type"头。解决此问题的关键在于确保后端代码正确设置MIME类型,使其符合HTML文档的标准。通过排查并修复这些问题...

    elasticsearch数据备份工具之elasticdump

    总结来说,`elasticdump`是Elasticsearch数据管理的重要工具,通过简单的命令行操作,即可实现数据的备份、迁移和恢复,对于日常运维和灾难恢复具有重要作用。了解并熟练掌握其使用方法,能有效提高Elasticsearch...

    网页字符编码问题总结及解决

    ### 网页字符编码问题总结及解决 在日常的网页开发过程中,经常会遇到字符编码导致的乱码问题。本文将结合实践经验,深入探讨不同情况下乱码产生的原因,并提出相应的解决方案。 #### 一、理解字符编码的基础概念 ...

    文件下载response.setHeader()下载中文文件名乱码问题解决办法.pdf

    总结来说,通过设置正确的Content-Disposition响应头,并将文件名进行UTF-8编码,可以有效解决Web应用中文件下载时的中文文件名乱码问题。同时,根据文件类型设置正确的Content-Type响应头,以及考虑浏览器的兼容性...

    PHP乱码问题,UTF-8乱码常见问题小结

    本文主要针对PHP环境下的UTF-8乱码问题进行总结,提供一系列的解决方案。 一、HTML页面转UTF-8编码问题 1. HTML元标签设置:在HTML文档的`&lt;head&gt;`标签之后,`&lt;title&gt;`标签之前添加`&lt;meta&gt;`标签,声明页面的字符编码...

    struts2 漏洞 "cve-2017-5638" 研究文档

    这里的问题在于,异常信息中包含的非法`content-type`被错误地解释为OGNL表达式,从而导致远程代码执行。 #### 漏洞原理 在Struts2中,如果HTTP请求的`content-type`不合法,那么在解析上传文件的过程中就会抛出...

    Apache Struts2(S2-045)漏洞升级指南

    在**Apache Struts2** 的**Jakarta Multipart Parser** 插件中,当用户提交包含文件的表单时,插件会解析`Content-Type`字段来确定如何处理这些数据。如果攻击者能够篡改`Content-Type`字段并注入恶意的OGNL表达式,...

    python爬虫实现POST request payload形式的请求

    在实际的Python爬虫项目中,为了确保数据正确发送,我们需要根据目标网站的要求设置合适的Content-Type,并且可能需要处理cookies、session、headers等其他细节。对于一些需要登录验证的网站,通常需要先进行登录...

    SpringMVC源码总结(四)由StringHttpMessageConverter引出的客户端服务器端之间的乱码过程分析

    2. 设置Content-Type:确保在请求和响应中正确设置Content-Type头部,明确指出字符编码。例如,`Content-Type: application/json; charset=UTF-8`。 3. 使用统一编码:在整个应用中,保持统一的字符编码标准,避免...

Global site tag (gtag.js) - Google Analytics