[MIME] Content-Type 、IE、MIME和 注册表的那些事 (text/plain 文件 下载)

来源:互联网 发布:.net是什么域名 编辑:程序博客网 时间:2024/05/17 01:36

最近碰到了一个很郁闷的问题,大致情况如下:

 

手边有一个J2EE的应用,里面有一个action 设置响应报头 Content-Type 为 text/plain;charset=** ,结果导致一部分客户机子访问此url出现后台运行正常,但是页面上出现下载。

比如我们访问的是 http://localhost/test/a.jspa , 结果出现了一个下载框提示下载a.jspa文件且此文件类型是 jspa_auto_file。

 

经过两天的查找终于理出点头绪,原来是注册表中 HKEY_CLASSES_ROOT 项下多了一个子项 .jspa且这子项的值为jspa_auto_file。

 

然后我做了一些测试,发现只有满足以下三个条件才能成立:

  1. 后台应用设置响应报头 Content-Type 为 text/plain;charset=**
  2. 注册表中 HKEY_CLASSES_ROOT下有URL后缀同名的子项,且子项的值为“子项的名字+_auto_file”.比如URL 为 http://localhost/a.suffix 那么子项的名字为 .suffix 值为 suffix_auto_file
  3. 返回的数据是纯文本

才会出现上述的情况。

 

为什么会这样呢,根据网上的资料和MSDN的文档,我的推测如下:

 

IE在解析URL的时候会自动检测MIME类型,当碰到text/plain类型的时候他会查找注册表中HKEY_CLASSES_ROOT项下是否有匹配的内容,如果有就会使用此值进行解析。

 

还望对IE熟的高手指教

 

原创粉丝点击