【随笔】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 ...
随机推荐
- java学习(四)static静态变量 和this
java中的this /* this:是当前类的对象引用.简单的记,它就代表当前类的一个对象. 注意:谁调用这个方法,在该方法内部的this就代表谁. this的场景: 解决局部变量隐藏成员变量 */ ...
- oracle通过job执行procedure
1. 先创建一个FUNCTION CREATE OR REPLACE FUNCTION GET_TIMEOUT_PROGRAM(i_customerNo IN TK_CUST_PROG_D.CUSTO ...
- selenium+jenkins+maven+testNG搭建持续集成环境
为了简明起见,分几大部分,很基础的细节就不详述了 一·安装jenkins 二·创建一个maven项目的job 2.1 填上SVN的Repository URL 2.2 由于是在本地执行maven ...
- 从golang的垃圾回收说起(下篇)
文章来自网易云社区 4 Golang垃圾回收的相关参数 4.1 触发GC gc触发的时机:2分钟或者内存占用达到一个阈值(当前堆内存占用是上次gc后对内存占用的两倍,当GOGC=100时) # 表示 ...
- [HAOI2008] 排名系统
题目链接:戳我 要注意因为数可能会对应很多人,但是输出的时候要按照添加的顺序输出.所以我们不能将相同值的节点合并,用set维护.就算值相同也只能新开节点. 然后就没有什么了...懒得写哈希表..直接上 ...
- Ubuntu16.04以root身份登入!
首先以非root用户身份登入系统. 1,修改root密码:启动shell,随后在shell里面输入命令: sudo passwd root 最后输入root要使用的密码,需要输入两次,这样root密码 ...
- jQuery展开收缩2
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- Python一篇学会多进程
阅读目录 1. Process 2. Lock 3. Semaphore 4. Event 5. Queue 6. Pipe 7. Pool 序. multiprocessing python 中的多 ...
- [AIR] AIR将数据保存并导出为Excel
package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.filesystem.File; ...
- Determining the Size of a Class Object---sizeof(class)---By Girish Shetty
There are many factors that decide the size of an object of a class in C++. These factors are: Size ...