当前位置: 首页 > 面试题库 >

在Node.js中发送文件之前,如何设置MIME类型?

沈飞跃
2023-03-14
问题内容

从Node.js服务器向浏览器发送脚本时,在Google Chrome浏览器中,出现以下警告:

资源被解释为脚本,但以MIME类型文本/纯文本传输

我用Google搜索了一下,发现这是服务器端的问题,也就是说,我认为在发送事物之前,我应该为事物设置正确的MIME类型。这是HTTP服务器的处理程序

var handler = function(req, res)
{
    url = convertURL(req.url); //I implemented "virtual directories", ignore this.

    if (okURL(url)) //If it isn't forbidden (e.g. forbidden/passwd.txt)
    {
        fs.readFile (url, function(err, data)
        {
            if (err)
            {
                res.writeHead(404);
                return res.end("File not found.");
            }

            //I think that I need something here.
            res.writeHead(200);
            res.end(data);
        });
    }
    else //The user is requesting an out-of-bounds file.
    {
        res.writeHead(403);
        return res.end("Forbidden.");
    }
}

问题: 如何更正服务器端代码以正确配置MIME类型?

(注意:我已经找到https://github.com/broofa/node-mime,但是它只能让我确定MIME类型,而不是“设置”它。)


问题答案:

我想到了!

感谢@rdrey的链接和此节点模块,我设法正确设置了响应的MIME类型,如下所示:

function handler(req, res) {
    var url = convertURL(req.url);

    if (okURL(url)) {
        fs.readFile(url, function(err, data) {
            if (err) {
                res.writeHead(404);
                return res.end("File not found.");
            }

            res.setHeader("Content-Type", mime.lookup(url)); //Solution!
            res.writeHead(200);
            res.end(data);
        });
    } else {
        res.writeHead(403);
        return res.end("Forbidden.");
    }
}


 类似资料:
  • 我已经读过这个和这个问题,它似乎建议可以在客户端使用javascript检查文件MIME类型。现在,我明白了真正的验证仍然必须在服务器端完成。我想执行客户端检查,以避免不必要的服务器资源浪费。 我说目前没有办法用javascript检查MIME类型,对吗?还是我漏掉了什么?

  • 问题内容: 假设您要将一堆文件保存在某个地方,例如在BLOB中。假设您想通过网页分发这些文件,并让客户端自动打开正确的应用程序/查看器。 假设:浏览器通过HTTP响应中的mime-type(content-type?)标头找出要使用的应用程序/查看器。 基于此假设,除了文件的字节外,您还希望保存MIME类型。 您将如何找到文件的MIME类型?我目前在Mac上,但是在Windows上也应该可以使用。

  • 我需要使用MIME发送POST请求- 这是我对POST标题的默认配置:

  • 问题内容: 我有一些我无法理解的代码,我试图使用回调返回对象数组,我有一个函数返回值,然后将其压入数组,但是我无法在函数外部访问它,我在这里做一些愚蠢的事情,但无法分辨(我对Node.JS非常陌生) 问题答案: 您在这里遇到了多个问题。核心问题是要了解异步响应如何工作以及何时执行哪些代码。但是,除此之外,您还必须学习如何在循环中管理多个异步响应,以及如何知道何时完成所有响应以及如何按顺序获取结果以

  • 我已经用这个方法在选择之前查看照片了。请注意照片。

  • 问题内容: 我有一个Spring MVC控制器,它返回一个JSON字符串,我想将mimetype设置为application / json。我怎样才能做到这一点? 业务对象已经可以作为JSON字符串使用,因此使用不是我的解决方案。是完美的,但如何设置模仿类型? 问题答案: 我会考虑重构服务以返回您的域对象而不是JSON字符串,并让Spring处理序列化(通过编写时的)。从Spring 3.1开始,