服务端的接口服务可能会通过Nginx进行转发。如果是https协议,则监听443端口。当然接口服务也可以直接访问服务端Node.js监听的端口,比如:3100,但是需要开放服务端的防火墙端口。本文介绍我遇到的问题,问为什么要开启https服务?Node.js如何配置证书?Express.js是如何配置证书的?为什么使用HTTPS?HTTPS是一种用于在计算机网络上进行安全通信的传输协议。它通过HTTP进行通信,使用SSL/TLS建立完整的通道,并对数据包进行加密。使用HTTPS的主要目的是为网站服务器提供身份认证,同时保护交换数据的私密性和完整性。升级到HTTPS的好处是对SEO更友好解锁现代浏览器(服务工作者、WebUSB、蓝牙)的一些高级功能也需要HTTPS支持。不同协议对资源访问的限制如果你的域名是www.iicom.top,并且有一个前端项目运行在这个http://www.iicom.top地址下,这个项目可以通过访问http://提供/www.iicom.top静态资源。但是如果前端项目运行在https://www.iicom.top上,则无法访问http://www.iicom.top提供的静态资源。浏览器将抛出以下错误:[已阻止]位于“https://www.iicoom.top”的页面已通过HTTPS加载,但从“http://www.iicoom.top”运行了不安全的内容:此内容也应通过HTTPS加载。因此,我们需要将协议升级为HTTPS。Node.js启动https服务官方文档consthttps=require('https');constfs=require('fs');const选项={key:fs.readFileSync('key.pem'),cert:fs.readFileSync('cert.pem')};https.createServer(options,function(req,res){res.writeHead(200);res.end("helloworld\n");}).listen(8000);但是如果你使用express框架怎么办呢?express配置https服务constexpress=require('express');constfs=require('fs');consthttps=require('https');constapp=express();app.get('/',(req,res)=>{res.send('HelloWorld!');});constprivateKey=fs.readFileSync('./cert/iicom.key');const证书=fs.readFileSync('./cert/iicoom.crt');https.createServer({key:privateKey,cert:certificate,},app).listen(port,()=>{console.log(`示例应用监听http://localhost:${3100}`);});这样网站、界面、静态资源都升级为https协议。希望对你有帮助。文章首发于我的博客《IICOOM-技术博客 Node.js提供HTTPS服务》
