【随笔】MIME类型
在openResty作为Web服务器的情况下访问根目录的首页时,出现了这样一个问题:

nginx端的配置:
worker_processes 2;
error_log logs/error.log; events {
worker_connections 1024;
} http {
server {
listen 8080;
server_name localhost; location / {
index index index.html index.htm;
root /usr/local/openresty/nginx/work; }
location /dir {
default_type "text/plain";
content_by_lua_file /usr/local/openresty/nginx/work/resources/lua/index.lua;
} }
}
仅就nginx配置来看,是没有什么问题的,不过实际使用上,就发生了这个错误,页面的呈现也出现了问题,仅仅把文本输出了,其余都没有反应。
多方查询求证,到目前为止,问题的解决方案就是在服务器的响应头添加Content-Type配置,这里有两种解决办法,一种是openresty的more_set_headers模块方法,另外一种就是使用nginx方法add_header指令给response添加Content-type内容,这样就解决了那个办法。
MIME类型
MIME是一种保证非ASCII码文件在internet上传播的规格。原本是用于邮件系统传送除了ASCII就是纯文本文件的内容外,可以传送图片等其他格式使用的。后来,浏览器也支持这种规范,所以除了HTML等文本格式外,可以有很多其他格式。
浏览器在接收到服务器的响应文件时,会通过响应头Content-Type的内容来进入插件系统进行查找,查找出哪种插件可以识别读取接收到的文件。如果插件缺失,会提示你下载插件,所以Content-Type的内容决定了你是否能够正确的呈现你想要呈现的内容。
常见的MIME类型
超文本标记语言文本 .html html text/html
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
GIF图形 .gif image/gif
JPEG图形 .ipeg jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra ram audio/x-pn-realaudio
MPEG文件 .mpg mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
更多查看这里。
Internet中有一个专门组织IANA来确认标准的MIME类型,但Internet发展的太快,很多应用程序等不及IANA来确认他们使用的MIME类型为标准类型。因此他们使用在类别中以x-开头的方法标识这个类别还没有成为标准,例如:x-gzip,x-tar等。事实上这些类型运用的很广泛,已经成为了事实标准。只要客户机和服务器共同承认这个MIME类型,即使它是不标准的类型也没有关系,客户程序就能根据MIME类型,采用具体的处理手段来处理数据。而Web服务器和浏览器(包括操作系统)中,缺省都设置了标准的和常见的MIME类型,只有对于不常见的 MIME类型,才需要同时设置服务器和客户浏览器,以进行识别。
由于MIME类型与文档的后缀相关,因此服务器使用文档的后缀来区分不同文件的MIME类型,服务器中必须定义文档后缀和MIME类型之间的对应关系。而客户程序从服务器上接收数据的时候,它只是从服务器接受数据流,并不了解文档的名字,因此服务器必须使用附加信息来告诉客户程序数据的MIME类型。服务器在发送真正的数据之前,就要先发送标志数据的MIME类型的信息,这个信息使用Content-type关键字进行定义,例如对于HTML文档,服务器将首先发送以下两行MIME标识信息,这个标识并不是真正的数据文件的一部分。
Content-type: text/html
注意,第二行为一个空行,这是必须的,使用这个空行的目的是将MIME信息与真正的数据内容分隔开。
使用了add_header指令后,index.html内联的.js文件和.css文件的response Content-Type内容都改正确了,本文开头的问题也没有再出现了。不过Chrome依旧仅显示了文本,各种js和css效果均未触发,问题终究未解决....
最后,无意识的使用了其他的浏览器,包括IE等浏览器访问该文件,结果呈现内容效果是正确的。再用Chrome试试,依旧有问题...难道需要考虑浏览器兼容?或者是其他?先在这里把问题记下,待解决了问题再补齐!
【随笔】MIME类型的更多相关文章
- 上传和设置Mime类型
这两天一直在忙把主页上传的事,幸亏不久前花七块钱买了一年的数据库和虚拟主机,昨天上传了自己的个人主页,发现很多问题要改,因为代码一直没整理就那么放着了,大部分东西都要重新弄,然后把本地数据库的数据迁移 ...
- 【积累篇:他山之石,把玉攻】Mime 类型列表
按照内容类型排列的 Mime 类型列表 类型/子类型 扩展名 application/envoy evy application/fractals fif application/futurespla ...
- 如何在ASP.NET的web.config配置文件中添加MIME类型
常常有一些特殊的MIME类型是IIS中没有的,一般来说要我们自己手动添加.如果网站经常更换服务器或者网站代码是提供给多个用户使用,那么会造成网站中用到的特殊的MIME类型要经常性的在IIS上配置.这里 ...
- 【IIS】IIS6.1配置 *.config 文件 的MIME类型用于升级程序
参考:http://blog.csdn.net 1. 2. 请求筛选中允许config文件下载, 3. 添加.config到 MIME类型. 3.注意:筛选项.
- 使用MultipartEntity进行post请求的默认MIME类型
MultipartEntity .FileBody的默认MIME类型:application/octet-stream
- 常用MIME类型(Flv,Mp4的mime类型设置)(转载)
转载地址:http://www.cuplayer.com/player/Help/2011/0625/83.html 也许你会在纳闷,为什么我上传了flv或MP4文件到服务器,可输入正确地址通过htt ...
- 创建 MIME 类型////////////zzz
用 Apache 创建 MIME 类型 在 Apache 里, MIME 类型和文件扩展名之间的映射是被存放在配置文件 "apache根目录/conf/mime.types" 里的 ...
- 各种文件的mime类型
扩展名:abs MIME类型:audio/x-mpeg 扩展名:ai MIME类型:application/postscript 扩展名:aif MIME类型:audio/x-aiff 扩展名:aif ...
- 为Windows Azure Web站点添加MIME类型解决文件下载失败的问题
这几天在倒腾Autodesk 360 Viewer,前面的文章也介绍过了,这将是一个全新的在线模型浏览工具.我做了个实验,把A360Viewer放在一个web 站点,然后发布到Windows Azur ...
随机推荐
- Middleware / 中间件
中间件格式 module.exports = options => { return (ctx, next) => { // do something } } 中间件格式为一个高阶函数,外 ...
- Java 实现 WC.exe
Github:https://github.com/YJOED/Code/tree/master/WC/src 一.题目:实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他 ...
- redis----内部数据结构学习
整数集合 1.应用 用于有序.无重复的保存多个整数值 自动选择该用什么长度的整数类型保存数据
- Go语言最佳实践—— 字符串
1.串联字符串 Go语言虽然支持+=操作符来追加字符串,但更好的方式是使用bytes.Buffer,这种方式在节省内存和效率方面有更好的表现. 如: var buffer bytes.Buffer b ...
- gitignore失效 删除 git commit记录
已追踪的文件需要清理本地缓存 git rm -r --cached . git add . git commit -m 'update .gitignore' 删除 git commit记录 不小心上 ...
- Linux下iptables防火墙用法规则详解
管理网络流量是系统管理员必需处理的最棘手工作之一,我们必需规定连接系统的用户满足防火墙的传入和传出要求,以最大限度保证系统免受×××.很多用户把 Linux 中的iptables当成一个防火墙,从严格 ...
- VMware安装linux系统报错:已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。
检测问题所在: 下载LeoMoon CPU-V 检查一下CPU VT-x状态是否启用 地址:http://download.csdn.net/detail/qq_22860341/9858011 如果 ...
- [ActionScript 3.0] 创建倒影
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Display ...
- centos6,7中防火墙基本用法
centos 7中 1.永久开放端口8080 firewall-cmd --zone=public --add-port=8080/tcp --permanent (添加端口后,重启防火墙后才能查看) ...
- [开源] angularjs + Asp.net 前后端分离解决方案
本文版权归 博客园 萧秦 所有,此处为技术收藏,如有再转,请于篇头明显位置标明原创作者及出处,以示尊重! 作者:萧秦 原文:http://www.cnblogs.com/xqin/p/4862849. ...