我需要将一些数据从一个节点快速应用程序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!')
})
答案 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中。