nodejs部署的服務用localhost+端口可以訪問,換成ip+端口就無法訪問
問題描述:最近用node js寫了個接口服務,部署到服務器上,在服務器上通過localhost+端口就可以訪問,但是換成ip+端口就一直提示無法訪問,而且外部瀏覽器也無法訪問。
原因:我把監聽的地址寫成了127.0.0.1,所以才造成了一個烏龍。。。。下邊給出正確寫法。
const express = require('express');
const app = express();
const mysql = require('mysql');
var bodyParser = require('body-parser');
// 創建application/x-www-form-urlencoded 編碼解析
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
const connection = mysql.createConnection({
host:'localhost',
user:'root',
password:'admin',
database: 'apidata'
});
connection.connect();
// 下面是解決跨域請求問題
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-Headers', 'Content-Type');
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header('Access-Control-Allow-Credentials', true);
res.header("X-Powered-By",' 3.2.1');
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
// 這裏就是主要要修改的地方,其實也就一行
// 把 address 改成你自己定的地址,就是連接訪問的那個地址
app.get('/testapi',function(err,res){
const sql = 'select * from runoob_tbl'; // 寫你需要的sql代碼,你要是不會寫那我就真的沒辦法了
connection.query(sql,function(err,result){
if(err){
console.log('[SELECT ERROR] - ', err.message);
return;
};
// result內放的就是返回的數據,res是api傳數據
// 返回的數據需要轉換成JSON格式
res.json(result);
});
});
app.post('/setval',(req,res)=>{
console.log(req.body);
const sql = 'insert into runoob_tbl (runoob_title, runoob_author, submission_date) values ("'+req.body.title+'","'+req.body.auth+'","'+req.body.time+'")';
connection.query(sql,(err,result)=>{
console.log(result);
if(err){
res.json({
status:'error',
msg:'添加失敗!'
});
return;
};
res.json({
status:'success',
msg:'添加成功!'
});
});
});
//注意:這裏是錯誤寫法:
// var server = app.listen(8081, '127.0.0.1', function () {
// var host = server.address().address;
// var port = server.address().port;
// console.log("地址爲 http://%s:%s", host, port);
// });
//這是正確寫法:
var server = app.listen(8081, '0.0.0.0', function () {
var host = server.address().address;
var port = server.address().port;
console.log("地址爲 http://%s:%s", host, port);
});