nodejs部署的服務用localhost+端口可以訪問,換成ip+端口就無法訪問

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);
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章