Node连接MySql返回数据给Https协议网站为什么不显示
一路踩坑过来。
其实node连接MySql返回数据给拥有https协议的网站,出错不显示的原因很简单:
因为证书验证不通过,Node发出的数据包没带上 ssl证书.
这里的话我用的是阿里云服务器,在阿里云的 SSL证书(应用安全) 中申请的免费证书。 -----这是关键
在写好后在服务器切换到目录,node app.js 执行
同时在本地可打开路径,index.html主页的内容等会我会放在最下方。
下载express,这里我们使用express来搭建服务,结合数据库来完成完整的前后端业务
npm i express //引入express
npm i mysql //引入mysql
npm i body-parser //解决post参数问题
新建app.js文件(可随意命名) 代码如下:写好后在服务器运行 Node app.js
var express = require('express'); //引入express
var app = express();
//注册成app(这里也可以应用路由中间件 var router = express.Router(),接着在写接口时,将app替换为router)
var bodyParser = require('body-parser'); //引入插件包,解决post请求参数问题
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
var mysql = require('mysql'); //引入数据库插件包
var connection = mysql.createConnection({ //填写数据库的信息
host: ***.**.***.16', //域名 Amayaliu.cn
user: 'root', //用户
password: '**********', //密码
database: 'Amayaliu.cn', //数据库的名称 记得换
});
var https = require('https'),fs = require("fs");
var options = {
//下载的nginx版的,记得替换成自己的 有一些自己配置生成的ssl貌似会被阻止
key: fs.readFileSync('./***********.key'),
cert: fs.readFileSync('./************.pem')
};
connection.connect(); //连接数据库(在这里的操作和php类似,学过php的朋友应该很简单)
//设置跨域访问
app.all('*', function (req, res, next) {
//设置全局的全域问题,我这里是把所有的全部允许了,
//如果不怕麻烦或者业务需求,你也可以在请求里面写对应的跨域问题
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By", ' 3.2.1');
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
//查询接口
app.get('/weblist', function (req, res) {
//写对应的你需要操作的sql语句,
var sql = "select * from weblist"
//执行mysql语句,访问数据库
connection.query(sql, function (error, result, fields) {
res.send(result)
//将结果返回(这里的数据我们可以进行响应的判断和包装返回给前端)
})
});
//监听服务端口
https.createServer(options, app).listen(3000, function () {
console.log('Https server listening on port ' + 3000);
});
新建index.html文件(可随意命名) 代码如下: 写好后放于服务器https对应的目录
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="op"></div> <script src="https://cdn.bootcss.com/jquery/1.8.3/jquery.js"></script> <script> $(function(){ $.ajax({ type:'get', url:'https://amayaliu.cn:3000/weblist',//地址替换成自己的https网站 success:function(data){ $("#op").html(data[0].name); },error:function(){ console.log('error') } }) }) </script> </body> </html>
https://amayaliu.cn/
Amayaliu丶夜雨 个人博客编写中 欢迎前往浏览.