IE9,歌剧和旧的Safari试图下载我的Node.js服务器托pipe的网站作为一个文件?

我…我完全难住了。 这对我来说绝对没有意义。

现在,我是HTML5,CSS和Javascript的新手,但是我觉得我已经用Node.js制作了一个体面的(未完成的)网站devise和一个不错的,简单的(未完成的)服务器程序。 事情是…虽然它不会在IE9,Opera或Safari 5.0.6或其他许多浏览器的旧版本中呈现, 而只是试图下载网站作为一个没有扩展名的文件。 然而,它适用于Chrome,Firefox和Safari 5.1.7。 (我还没有testing过其他浏览器。)

我甚至不知道从哪里开始进行故障排除,我希望这里有人能帮助我。
希望它有一些与我的服务器configuration或代码和我的错误。

来源 –
服务器: http : //pastebin.com/vzGnWfgr
HTML: http : //pastebin.com/CvPBhmPa
CSS(如有必要): http : //pastebin.com/WSAKxqxD

我现在也有这个网站在我的服务器上: http : //test.kdude63.com/

另外,如果它有什么不同,我在我的服务器上运行Ubuntu服务器12.04 LTS。

您的HTTP响应中的内容types(MIMEtypes)是未定义的,我可以在运行wireshark跟踪并查看服务器的200响应时看到。 如果我访问http://test.kdude63.com/index.html,opera的效果就不会像以前那样好了,而且内容types也是在响应中指定的。 这表明对我的主要索引页面的处理有一个问题。

Chrome和Firefox似乎默认处理这个未定义的数据为text / html,这就是为什么他们没有显示页面的问题。

另外,我发现你的case语句有一个不允许的布尔expression式,并且会导致任何扩展名为.htm的页面都有这个问题。 改变这个:

case '.html' || '.htm': contentType = 'text/html'; break; 

对此:

 case '.html': case '.htm': contentType = 'text/html'; break; 

在你的网站(http://test.kdude63.com/)中,页面的响应头有Content-Type: undefined

当Content-Type是未知的MIMEtypes时,许多浏览器只是下载页面。 检查您的app.js或框架的标题设置。