在 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' }));
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SRS transcode支持 h264_nvenc 硬件解码方案

文章目录 SRS transcode支持 h264_nvenc 硬件解码方案1、修改文件2、重新编译3、使用 SRS transcode支持 h264_nvenc 硬件解码方案 SRS 是开源的流媒体服务,但在使用 GPU 服务器时,想要通过硬件加速,目前官方是不支持的,所以简单…

数字系统与编码

1. 数字系统(Number Systems) 1.1 常见数字系统 系统基数符号集示例应用场景二进制20, 11010计算机底层电路、数据存储八进制80-717Unix文件权限(如chmod 755)十进制100-942日常计算十六进制160-9, A-F0x1F内存地址、颜色编码&a…

【PyTorch】训练时跟OOM相关的提示信息

1. RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling cublasCreate(handle)

基于maven-jar-plugin打造一款自动识别主类的maven打包插件

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

多态的主要好处与不足

多态是面向对象编程的核心特性之一,它通过方法重写、接口实现等方式实现“同一操作作用于不同对象时产生不同行为”。以下是多态的主要好处与不足: 多态的好处 1. 提高代码灵活性和扩展性 开闭原则支持:新增子类时,无需修改现有…

excel解析图片pdf附件不怕

背景 工作中肯定会有导入excel还附带图片附件的下面是我解析的excel,支持图片、pdf、压缩文件实现 依次去解析excel,看看也没有附件,返回的格式是Map,key是第几行,value是附件list附件格式都被解析成pdf格式Reader.jav…

python爬虫 线程,进程,协程

0x00 线程 线程是一个执行单位,是在一个进程里面的,是共享进程里面的提供的内存等资源,使用多个线程时和使用多个进程相比,多个线程使用的内存等资源较少。进程像一座“房子”(独立资源),线程是…

ES|QL,知道吗,专为搜索而生 —— 推出评分和语义搜索

作者:来自 Elastic Ioana Tagirta 在 Elasticsearch 8.18 和 9.0 中,ES|QL 支持评分、语义搜索以及更多的 match 函数配置选项,还有一个新的 KQL 函数。 使用 ES|QL 搜索 在 Elasticsearch 8.18 和 9.0 中,ES|QL 增加了一系列新功…

MIT6.S081-lab4

MIT6.S081-lab4 注:本篇lab的前置知识在《MIT6.S081-lab3前置》 1. RISC-V assembly 第一个问题 Which registers contain arguments to functions? For example, which register holds 13 in main’s call to printf? 我们先来看看main干了什么: …

一文总结通信电路中LC谐振回路中各公式以及对深入解读品质因数Q

目录 前言 一、基本公式总结 1.并联谐振回路 2.串联谐振回路 二、浅谈品质因数 1.衡量谐振回路能量存储与能量损耗之比的无量纲参数,用于描述谐振电路的频率选择性 2.当受到振荡驱动力时,谐振腔的中心频率与其带宽的比值 3.为什么谐振时电容上的…

Linux:文件系统

一.认识硬件–磁盘 1. 物理结构 1.2 存储结构 ❓如何定位⼀个扇区呢? 可以先定位磁头(header)——》确定磁头要访问哪⼀个柱⾯(磁道)(cylinder)——》 定位⼀个扇区(sector)。 柱⾯(cylinder&#xff09…

数字孪生废气处理工艺流程

图扑数字孪生废气处理工艺流程系统。通过精准 3D 建模,对废气收集、预处理、净化、排放等全流程进行 1:1 数字化复刻,实时呈现设备运行参数、污染物浓度变化等关键数据。 借助图扑可视化界面,管理者可直观掌握废气处理各环节状态&#xff0c…

Scratch——第18课 列表接龙问题

在四级的考级中,接龙的题目虽然在CIE中只出现过两次,但是这类题目对字符串的知识点考察相对全面。 一、接龙游戏的判断方法 接龙的内容对应的字符数 ? 已接龙内容的字符数 满足条件>接龙内容的第一个字符数 ? 上一项接龙的最后一个字符 满足条件…

webgl入门实例-向量在图形学中的核心作用

在图形学中,向量是描述几何、光照、运动等核心概念的基础工具。以下是向量在图形学中的关键应用和深入解析: 1. 向量的核心作用 几何表示:描述点、方向、法线、切线等。空间变换:平移、旋转、缩放等操作依赖向量运算。光照计算&a…

Redis 是如何保证线程安全的?

Redis 是如何保证线程安全的? Redis 是一个高性能的键值数据库,广泛应用于缓存、消息队列、实时分析等场景。由于其性能优势,Redis 已经成为许多系统的核心组件之一。然而,很多开发者在使用 Redis 时,常常会问&#x…

Img2img-turbo 在2080Ti上的测试笔记

1. 介绍 [img2img-turbo]是[pytorch-CycleGAN-and-pix2pix]推荐的更新的图像变换的代码实现; 2. 配置信息 Conda环境名称:img2img-turbo 3. 问题描述 当前在我们尝试使用了官方推荐的训练命令在2080Ti上进行训练, 3.1 出现了 CUDA out …

代码随想录算法训练营第三十五天|416. 分割等和子集、698.划分为k个相等的子集、473.火柴拼正方形

今日题目 416. 分割等和子集 题目链接:416. 分割等和子集 - 力扣(LeetCode) 思考:本题要将数组分为两个子数组,且两个子数组和相等,因此首先可以想到的条件就是数组可分为两个,这要求数组元素数…

纯CSS实现自动滚动到底部

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>自动滚动到底部</title><style>*…

【新人系列】Golang 入门(十五):类型断言

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12898955.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Golang 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…

AI大模型发展现状与MCP协议诞生的技术演进

1. 大模型能力边界与用户痛点&#xff08;2023年&#xff09; 代表模型&#xff1a;GPT-4&#xff08;OpenAI&#xff09;、Claude 3&#xff08;Anthropic&#xff09;、通义千问&#xff08;阿里云&#xff09;等展现出强大的生成能力&#xff0c;但存在明显局限&#xff1a…