从nodejs expresslogin到cakephp

我有一个较旧的系统在PHP中,所以,我正在写一个新的与Node.js快递框架,在一些地方与Node.js网站我需要login到PHP网站(网站使用相同的凭据)。

基本上我有一个button,在某些地方在mi视图(在Express),当按下时,应采取一些用户凭据从某个地方,用这个凭据(没有任何forms)login到php网站,并redirect到已经login的php系统在浏览器上。

我试图按照这个答案

所以,这里是按下button时执行的代码。

app.post('/loginphp', function(req, res) { var data = request.post( 'http://somesite.somedomain.com/Users/login', { form:{ 'data[User][email]': 'someuser@somedomain.com', 'data[User][pass]' : 'somepassword' } }, function(error, response, body) { var sessionCookie = response.headers['set-cookie'][response.headers['set-cookie'].length - 1]; sessionCookie = sessionCookie.split(';'); sessionCookie = sessionCookie[0]; // trying with this way the same results /* res.set({'Cookie' : sessionCookie}). redirect('http://somesite.somedomain.com/Users'); */ // and same results too in this one /* res.setHeader('Cookie', sessionCookie). redirect('http://somesite.somedomain.com/Users'); */ res.header('Cookie', sessionCookie) .redirect('http://somesite.somedomain.com/Users'); //the output shows the cookie is saved just fine on headers /*console.log(res.header());*/ // Doing this!!! -> WORKS!! , but i need be on the browser not here. /* request.get('http://somesite.somedomain.com/Users', { headers: {"Cookie" : sessionCookie}, }, function (error, response, body) { if(response.statusCode == 200) { console.log(body); } }); */ }); }); 

取消注释最后一段代码(来自request.get),我可以看到这个作品很好,并打印login的网站用户主页的HTML(正文),但是当我尝试在标题中设置cookie并redirect到网站为了使浏览器login,这是行不通的

有可能通过这种方式做到这一点?

我错过了什么?

提前致谢。

@Gonzalo你仍然可以访问运行cakephp应用程序的(服务器/代码)吗?

您将需要添加一个跨源头,以允许您的node.js(express)应用程序向cakephp应用程序/网站发出POST请求。

例如:

 <?php header("Access-Control-Allow-Origin: *"); 

或者特定于CakePHP:

 $this->response->header('Access-Control-Allow-Origin', '*'); 

那么你可以通过运行testing它:

 curl -H "Content-Type: application/json" -dv "{'data[User][email]':'someuser@somedomain.com','data[User][pass]' : 'somepassword'}" http://somesite.somedomain.com/Users/login 

确认标题包含类似于以下的条目:

 Access-Control-Allow-Origin: * 

这将允许您从Node(使用请求)和您的客户端应用程序访问PHP应用程序。

更多信息:

让我知道(在评论中)如果你仍然无法发送POST请求到CakePHP应用程序。