http模块 设置资源类型(mime类型)

虽然浏览器自带websocket功能它会根据响应回来的内容自动去判断资源类型,但是我们加上了mime类型判断代码会更加规范些

一、mime类型概念:

媒体类型是一种标准,它用来表示文档。文件、字节流的性质和格式。HTTP服务可以设置响应头Content-Type来表明响应体mime类型,浏览器会根据该类型决定如何处理响应体的资源

二、具体类型:

mime类型结构:【type】/【subType】   (主类型/子类型)

常见文件对应的mime类型:

(1)html:“ text / html ”

(2)css:“ text / css”

(3)js:“ text / javascript”

(4)png:“ image/ png”

(5)jpg:“ image/ jpeg ”

(6)gif:“ image/ gif”

(7)mp4:“ video/ mp4”

(8)mp3:“ audio/ mpeg”

(9)json:“ application/ json”

(10)对于未知的资源类型,可以选择application / octet-stream类型,浏览器在遇到该类型的响应时,会对响应体内容进行独立存储。也就是我们常见的下载效果

三、代码示例:

以前面写过的获取静态资源代码为例:见http://t.csdnimg.cn/y9zIM

建一个32.mime.js文件,写入如下代码:

// 获取静态资源的代码
const http = require('http');
const fs = require('fs');
const path = require('path');
let mimes={
html:"text/html",
css:"text / css",
js:"text / javascript",
png:"image/ png",
jpg:"image/ jpeg",
gif:"image/ gif",
mp4:"video/ mp4",
mp3:"audio/ mpeg",
json:"application/ json"
}
// 2.创建服务对象
const server = http.createServer((request, response) => {// 获取请求url路径let { pathname } = new URL(request.url, 'http://127.0.0.1');// 拼接文件路径let filePath = __dirname + pathname;// 读取文件 fs异步APIfs.readFile(filePath, (err, data) => {if (err) {response.setHeader('content-type', 'text/html;charset=utf-8');response.end("文件读取失败,失败原因是:" + err.message); //注意读取的文件不能以中文命名,否则会报错return;}// mime类型的运用://1.获取文件的后缀名let ext = path.extname(filePath).slice(1);  //当我读取js文件时。后面不加.slice(1)的输出的后缀结果为.js。去除.这个瑕疵,于是使用了slice方法将.进行了裁剪,输出结果为js//2.获取对应的类型let type = mimes[ext];if (type) {// 匹配到了if(type==='html'){// 匹配到了response.setHeader('content-type', type,';charset=utf-8');  //charset=utf-8解决乱码问题。一般情况下只需要设置html页面的utf-8即可} else{response.setHeader('content-type', type); }}else {// 未匹配到response.setHeader('content-type', 'application/octet-stream');}// 响应文件内容response.end(data);})
})
// 3.监听端口,启动服务
server.listen(9000, () => {console.log('服务已启动...');
})

当我们打开浏览器输入http://127.0.0.1:9000/32.mime.js时去读取这个js文件。我们在网络里可以看到content-type的类型为text/javascript

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

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

相关文章

金三银四面试题(十四):Java基础问题(5)

这部分面试题多用于面试的热身运动,对很多找实习和准备毕业找工作的小伙伴至关重要。 避免序列化 可以使用transient 关键字修饰不想进行序列化的变量。 transient 关键字的作用是:阻止实例中那些用此关键字修饰的变量序列化;当对象被反序列…

【Linux】error: Failed to initialize NSS library

【Linux】error: Failed to initialize NSS library 原因:卸载了sqlite [rootnode1 ~]# rpm -qa|grep sql sqlite-3.7.17-8.el7.x86_64 rpm -e --nodeps sqlite-3.7.17-8.el7.x86_64 百度搜索 sqlite-3.7.17-8.el7.x86_64 下载此rpm包 cd /usr/local/download …

阿里云弹性计算通用算力型u1实例性能评测,性价比高

阿里云服务器u1是通用算力型云服务器,CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器,ECS通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xf…

Web实例_报表开发01-基于HTML进行报表呈现

Web实例_报表开发01-基于HTML进行报表呈现 报表开发是一种在利用了软件的基础上, 针对不同类型的报表, 进行开放的工作。 而以报表的方式, 将相关的内容、数值呈现出来的话, 则会起到更好的概况作用。 再加上, 报表开发工作是依托于计算机来完成的, 因此在效率、完整性等方面…

职场口才提升之道

职场口才提升之道 在职场中,口才的重要性不言而喻。无论是与同事沟通协作,还是向上级汇报工作,亦或是与客户洽谈业务,都需要具备良好的口才能力。一个出色的职场人,除了拥有扎实的专业技能外,还应具备出色…

探索----------------阿里云

目录 一、阿里云四大件 1、云服务器ECS 2、云数据库RDS 3、负载均衡SLB 4、对象存储OSS 5、其他的云计算产品 1)内容分发网络CDN 2)专有网络 VPC 二、linux发行版本 三、你平时对系统会怎么优化(五大负载) 1、cpu 使用率…

在project模式下自定义Implementation Strategies

Implementation Settings定义了默认选项,当要定义新的implementation runs时会使用这些选项,选项的值可以在Vivado IDE中进行配置。 图1展示了“Settings”对话框中的“implementation runs”对话框。要从Vivado IDE打开此对话框,请从主菜单中…

Pygame基础8-碰撞

Collisions 在Pygame中,我们使用矩形来移动物体,并且用矩形检测碰撞。 colliderect检测两个矩形是否碰撞,但是没法确定碰撞的方向。 Rect1.colliderect(Rect2) # collision -> return Ture # else -> return Falsecollidepoint可以…

el-upload上传图片图片、el-load默认图片重新上传、el-upload初始化图片、el-upload编辑时回显图片

问题 我用el-upload上传图片,再上一篇文章已经解决了,el-upload上传图片给SpringBoot后端,但是又发现了新的问题,果然bug是一个个的冒出来的。新的问题是el-upload编辑时回显图片的保存。 问题描述:回显图片需要将默认的 file-lis…

目标检测——车牌数据集

一、重要性及意义 交通安全与管理:车牌检测和识别技术有助于交通管理部门快速、准确地获取车辆信息,从而更有效地进行交通监控和执法。例如,在违规停车、超速行驶等交通违法行为中,该技术可以帮助交警迅速锁定违规车辆&#xff0…

ABAP SHIFT-字符串移位 和 CONDENSE去除空格

文章目录 SHIFT-字符串移位 和 CONDENSE去除空格SHIFT BY n PLACES RIGHT/LEFT运行结果 SHIFT ... UP TO ...运行结果 其他的-变量后面加括号和数字SHIFT c LEFT/RIGHT DELETING运行结果 SHIFT 去除0示例程序1运行结果示例程序2运行结果 CONDENSE示例程序运行结果 SHIFT-字符串…

DHCP实验

要求:全网IP范围为192.168.1.0/24,实现全网可达,HTTP服务器的域名为www.baidu.com,实现可以通过域名访问http 第一步、规划IP地址 按如图分别给路由器、http服务器、dns服务器、客户端配置IP地址,并且给pc设置为DHCP。…

BCLinux-for-Euler配置本地yum源

稍微吐槽一句…… 在这片土地上,国产化软件的大潮正在滚滚而来,虽然都不是真正意义上的国产化,但是至少壳是国产的~~~ 之前使用的Centos7的系统,现在都要求统一换成BCLinux-for-Euler。说实话换了之后不太适应,好多用习…

【测试篇】测试用例

文章目录 前言具体设计测试用例等价类边界值场景设计法判定表(因果图)正交排列(用的非常少)错误猜测法 前言 什么是测试用例?? 测试用例是针对软件系统或应用程序的特定功能或场景编写的一组步骤&#xf…

动态规划基础

动态规划 1、动态规划的概念 简称DP,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。常常适用于有重叠子问题和最优子结构性质的问题。 简单来说,就是给定一个问题,把它拆成一个个子问题,查到子问题可以直接解决。然后把子问题答案保存起来,以减少重复计算…

spring boot后端controller中接收表单参数校验

校验分为两部分,一部分是前端的输入时就校验,一部分时后端接收参数时的校验。本文提到的是后端接收参数时的校验。这个后端校验的存在有什么意义呢? 比如我们设置前端在输入参数时限制输入不能为空,应该为3-20位非空字符&#xf…

Selenium的简单防反爬和浏览器配置

# Selenium的简单使用:https://zhuanlan.zhihu.com/p/557463669 # 防反爬参考:https://blog.csdn.net/weixin_51368459/article/details/125462178 from selenium import webdriver from selenium.webdriver.edge.options import Options# 设置浏览器驱动…

2024.04.04 健身打卡第 45 天

别让别人告诉你,你成不了才,如果你有梦想的话就要去捍卫它,那些一事无成的人,想告诉你你也成不了大器,如果你有理想的话,就要去努力实现。 2024.04.04 健身打卡第 45 天

ubuntu更换国内镜像源,下载增速

方法一:通过脚本更换源 1.备份原来的源 sudo cp /etc/apt/sources.list /etc/apt/sources_init.list 将原来的源保留一下,以后想用还可以继续用 2.更换源 sudo gedit /etc/apt/sources.list 使用gedit打开文档,将下面的阿里源复制进去&am…

Prometheus+grafana环境搭建rabbitmq(docker+二进制两种方式安装)(二)

搭建完Prometheusgrafana基础环境后参见:Prometheusgrafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客,对我本地的一些常用法人服务进行一个监控。基本都可以根据官方文档完成搭建,因为docker和二进制方式安装各有优缺点。 d…