当前位置: 首页 > news >正文

在 Node.js 中设置响应的 MIME 类型

在 Node.js 中设置响应的 MIME 类型是为了让浏览器正确解析服务器返回的内容,比如 HTML、CSS、图片、JSON 等。我们通常通过设置响应头中的 Content-Type 字段来完成。


✅ 一、什么是 MIME 类型(Content-Type)?

MIME(Multipurpose Internet Mail Extensions)类型用于告诉浏览器或客户端:返回的数据是什么类型的内容

例如:

  • text/html:HTML 文件
  • application/json:JSON 数据
  • text/css:CSS 样式表
  • image/png:PNG 图片

✅ 二、手动设置 MIME 类型示例

const http = require('http');
const fs = require('fs');
const path = require('path');// 常见扩展名与 MIME 类型的映射表
const mimeTypes = {'.html': 'text/html','.css':  'text/css','.js':   'application/javascript','.json': 'application/json','.png':  'image/png','.jpg':  'image/jpeg','.gif':  'image/gif','.svg':  'image/svg+xml','.ico':  'image/x-icon','.txt':  'text/plain',
};const server = http.createServer((req, res) => {let filePath = '.' + (req.url === '/' ? '/index.html' : req.url);let ext = path.extname(filePath);// 默认 MIME 类型let contentType = mimeTypes[ext] || 'application/octet-stream';fs.readFile(filePath, (err, data) => {if (err) {res.writeHead(404, { 'Content-Type': 'text/plain' });return res.end('404 Not Found');}res.writeHead(200, { 'Content-Type': contentType });res.end(data);});
});server.listen(3000, () => {console.log('Server running on http://localhost:3000');
});

✅ 三、使用第三方模块 mime

如果你不想维护 MIME 映射表,可以使用官方推荐的 mime 模块。

安装:

npm install mime

使用:

const mime = require('mime');
const filePath = 'public/style.css';
const contentType = mime.getType(filePath); // 返回 'text/css'

✅ 常用 MIME 类型一览

扩展名MIME 类型
.htmltext/html
.csstext/css
.jsapplication/javascript
.jsonapplication/json
.pngimage/png
.jpgimage/jpeg
.gifimage/gif
.svgimage/svg+xml
.txttext/plain
.pdfapplication/pdf

✅ 四、注意事项

  • Content-Type告诉浏览器怎么处理数据的关键;
  • MIME 类型必须与实际资源类型匹配,否则浏览器可能拒绝渲染或报错;
  • 若未设置 Content-Type,浏览器可能会猜测类型,但这不安全;
  • 返回 JSON 时推荐:
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.end(JSON.stringify({ message: 'hello' }));
    

相关文章:

  • RenderStage::drawInner
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.23)
  • 计算机网络综合实验指南
  • 大模型安全吗?数据泄露与AI伦理的黑暗面!
  • ModuleNotFoundError: No module named ‘vllm.lora.peft_helper‘原因和解决方式
  • C++进阶-多态
  • 【C++ 程序设计】实战:C++ 实践练习题(31~40)
  • sort自定义排序函数tips【C++】
  • 维普期刊(瑞数6)分析
  • Android开发中广播(Broadcast)技术详解
  • rag搭建,是如何进行向量匹配检索的?
  • Transfomer的本质
  • 【Android】Wallpaper学习
  • 博客系统案例练习2-用户注册-redis
  • 数据库知识
  • 电解电容失效分析过程、失效分析报告
  • 450.删除二叉搜索树中的节点
  • 【Vulkan 入门系列】创建交换链、图像视图和渲染通道(四)
  • 【2025面试常问Java八股】AQS介绍(AbstractQueuedSynchronizer 抽象队列同步器)
  • PyCharm使用Anaconda 中的虚拟环境
  • 年近九旬的迪图瓦,指挥能量比盛年更为强劲
  • 金价新高不断,上金所再发风险提示,黄金能否持续闪耀?
  • 陈杨梅:刷到“棉花糖爸爸”寻女视频,隐约觉得自己就是爸爸要找的孩子
  • 官方披露:WinRAR安全漏洞可绕过安全警告,执行恶意软件
  • 上海交大发布“AI十条”,鄂维南院士已任该校人工智能学院讲席教授
  • C909飞机开启越南商业运营