将数据从一个节点传递到相同/不同域中的另一个应用程序

时间:2017-03-31 06:32:46

标签: node.js express connect

我需要将一些数据从一个节点快速应用程序A传递到另一个可能/可能不在同一域上运行的B.我想使用301重定向来做到这一点。我了解到,您可以通过连接闪存节点模块执行此操作,但它仅适用于相同的应用程序中间件。任何建议或参考都会有所帮助。感谢。

// App A
var express = require('express');
var session = require('express-session');
var cookieParser = require('cookie-parser');
var flash = require('connect-flash');
var app = express();

app.use(require('body-parser').json());
app.use(cookieParser('secret'));
app.use(session({cookie: { maxAge: 60000 }}));
app.use(flash());

app.post('/forceRedirect', function (req, res, next) {
    var dataRecieved = {
        requestHeaderVersion:req.get('version'),
        requestBodyParam:req.body.firstname,
        path:req.originalUrl
    };

    console.log('Data logging on node app A: ' +     JSON.stringify(dataRecieved));

    req.flash('testdata', 'it worked');    
    return res.redirect(301, 'http://mydomain/test') // Pass to     app  B that is on different domain

})

app.listen(3000, function () {
  console.log('Node 1 listening on port 3000!')
})
//App B - running on different domain

var express = require('express')
var session = require('express-session');
var cookieParser = require('cookie-parser');
var flash = require('connect-flash');
var app = express()

app.use(require('body-parser').json());
app.use(cookieParser('secret'));
app.use(session({cookie: { maxAge: 60000 }}));
app.use(flash());

app.get('/test', function (req, res) {
  console.log('Node app B is hit! and recieved data from node app A is :' + JSON.stringify(req.flash('testdata')));
  res.end();
})

app.listen(4000, function () {
  console.log('Node app 2 listening on port 4000!') 
})

1 个答案:

答案 0 :(得分:0)

这样做的一种方法是,如果你真的想要301,

// APP A

 return res.redirect(301, 'http://mydomain/test/data1/data2')

// APP B

app.get('test/:data1/:data2', function (req, res) {
    console.log(req.params.data1);
    console.log(req.params.data1);

});

修改

更好的方法是

res.redirect(307, 'http://mydomain/test');

这会将POST的原始内容重定向到另一个POST,可能是在APP B中。