在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类型的更多相关文章

  1. 上传和设置Mime类型

    这两天一直在忙把主页上传的事,幸亏不久前花七块钱买了一年的数据库和虚拟主机,昨天上传了自己的个人主页,发现很多问题要改,因为代码一直没整理就那么放着了,大部分东西都要重新弄,然后把本地数据库的数据迁移 ...

  2. 【积累篇:他山之石,把玉攻】Mime 类型列表

    按照内容类型排列的 Mime 类型列表 类型/子类型 扩展名 application/envoy evy application/fractals fif application/futurespla ...

  3. 如何在ASP.NET的web.config配置文件中添加MIME类型

    常常有一些特殊的MIME类型是IIS中没有的,一般来说要我们自己手动添加.如果网站经常更换服务器或者网站代码是提供给多个用户使用,那么会造成网站中用到的特殊的MIME类型要经常性的在IIS上配置.这里 ...

  4. 【IIS】IIS6.1配置 *.config 文件 的MIME类型用于升级程序

    参考:http://blog.csdn.net 1. 2. 请求筛选中允许config文件下载, 3. 添加.config到 MIME类型. 3.注意:筛选项.

  5. 使用MultipartEntity进行post请求的默认MIME类型

    MultipartEntity .FileBody的默认MIME类型:application/octet-stream

  6. 常用MIME类型(Flv,Mp4的mime类型设置)(转载)

    转载地址:http://www.cuplayer.com/player/Help/2011/0625/83.html 也许你会在纳闷,为什么我上传了flv或MP4文件到服务器,可输入正确地址通过htt ...

  7. 创建 MIME 类型////////////zzz

    用 Apache 创建 MIME 类型 在 Apache 里, MIME 类型和文件扩展名之间的映射是被存放在配置文件 "apache根目录/conf/mime.types" 里的 ...

  8. 各种文件的mime类型

    扩展名:abs MIME类型:audio/x-mpeg 扩展名:ai MIME类型:application/postscript 扩展名:aif MIME类型:audio/x-aiff 扩展名:aif ...

  9. 为Windows Azure Web站点添加MIME类型解决文件下载失败的问题

    这几天在倒腾Autodesk 360 Viewer,前面的文章也介绍过了,这将是一个全新的在线模型浏览工具.我做了个实验,把A360Viewer放在一个web 站点,然后发布到Windows Azur ...

随机推荐

  1. 【小梅哥FPGA进阶教程】第十四章 TFT屏显示图片

    十四.TFT屏显示图片 本文由杭电网友曾凯峰贡献,特此感谢 学习了小梅哥的TFT显示屏驱动设计后,想着在此基础上通过TFT屏显示一张图片,有了这个想法就开始动工了.首先想到是利用FPGA内部ROM存储 ...

  2. IIC接口总线

    转载:http://www.eefocus.com/article/08-07/48416s.html图11-1给出一个由MCU作为主机,通过IIC总线带3个从机的单主机IIC总线系统.这是最常用.最 ...

  3. 8、Semantic-UI之其他按钮样式

    8.1 其他按钮样式定义 示例:定义其他按钮样式 定义圆形图标按钮样式 <div class="ui circular icon button"><i class ...

  4. [LeetCode 题解]: UniquePaths

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  5. Qt学习(一)

    1. 简介 跨平台 GUI 通常有三种实现策略 API 映射 相当于将不同平台的 API 提取公共部分.界面库使用同一套 API,将其映射到不同的底层平台上面.相当于取交集 如wxWidgets. 优 ...

  6. Python【流程控制与循环】

    本文介绍 1.流程控制 2.while循环 一.流程控制 单分支 if 条件: ...Python代码,满足条件执行 双分支 if 条件: ...Python代码,满足条件执行 else: ...Py ...

  7. BF、kmp算法

    第七周 字符串匹配 BF算法,kmp算法 BF:时间复杂度为 O(m*n) int Index_BF(SString S, SString T, int pos) { ; while (i <= ...

  8. SPOJ 3267 DQUERY(离线+树状数组)

    传送门 话说这好像HH的项链啊…… 然后就说一说上次看到的一位大佬很厉害的办法吧 对于所有$r$相等的询问,需要统计有多少个不同的数,那么对于同一个数字,我们只需要关心它最右边的那一个 比如$1,2, ...

  9. now() 的用法

    在平时对于数据库操作中,有时候会使用到时间,比如-数据的创建时间/更新时间之类问题,可能是需要查询出时间的结果,也存在大量的需要搜索某个时间点或时间段的操作: MySQL中取本地时间 now() 取本 ...

  10. leetcode-796-Rotate String

    题目描述: We are given two strings, A and B. A shift on A consists of taking string A and moving the lef ...