2014-03-02 2 views
2

전적으로 PHP로 개발 한 앱을 가지고 있으며 이제는 내 앱에 RTN (Real Time Notification System)을 통합하려고합니다. 어떻게 내가 요청 헤더를 얻을 수Node.js에서 요청 헤더를 가져 와서 PHP 세션 ID를 얻으십시오

var app = http.createServer(function(request,response) 
{ 
    response.writeHead(200,{"Content-Type":"text/plain"}); 
    response.end(); 
}).listen(3000); 

var io = require('socket.io').listen(3000); 

CLIENT 지금

<script src="http://localhost:3000/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost:3000'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 
</script> 

하지만 의아해하기 : 현재 나는 서버가

이 코드를 PHP에 의해 렌더링 된 페이지 후 Node.js를 연결 이룬 클라이언트 요청? 실제로 나는 개발을 위해 PHP를 사용하고 RTN 시스템을 위해 클라이언트 쿠키를 얻고 싶습니다. 지금은

내가 세션을 저장하는 Memcache를 사용하고 업데이트 :(뿐만 아니라 쿠키를 얻을 SOT없는 요청 헤더를 가져 오는 방법을 모르는이 내가 쿠키를 얻을하려는 주된 이유로서 내가 할 수 있도록 PHP 세션 정보 얻기

+0

소켓이 바인딩 된 포트 인 '3000'을 선언하지 않고 노드 js 서버에 어떻게 연결하고 있습니까? – Ohgodwhy

+0

더 나은 이해를 위해 코드를 업데이트했습니다. –

답변

2

는 단순히이

io.sockets.on("connection",function(client) 
{ 
    console.log(client.handshake.headers.cookie); 
}); 

를 사용

당신은 PHP를 사이에 세션을 공유해야하고 nodejs 이것 좀 봐 PHP 세션 ID를 반환합니다. 위에서 언급 한 방법, 즉 PHP가 생성하고 Node를 별도로 호출하는 페이지를 사용하지 않는다면이 방법이 다를 수 있습니다. 위의 명령의 출력은 PHP는 쿠키를 설정하고 당신이 ID를 반환하고 그 PHP의 세션 ID 년대 headers.cookie을 받고 있기 때문입니다이

PHPSESSID=aj233jkjdfbk13adlljkwlkjjkj002 

같은 것입니다.

0

서버 생성 세션 쿠키는 "HTTPOnly"플래그가 있으며 클라이언트 측 또는 다른 서버에서 읽을 수는 없으며 원본 서버에서만 읽을 수 있습니다. 클라이언트 브라우저는 세션 쿠키를 원본으로 만 보냅니다 서버,

PHP에서 mydomain.com을 사용하고 nodejs가 mynode.com에있는 경우 mynode.com은 mydomain.com에서 세션 쿠키 생성을받지 못합니다. 그것은 것입니다 당신이 Node.js를에서 PHP 세션 ID를 얻고 싶다면 http://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share-redi/

+0

Memcached와 세션을 공유 중이므로 쿠키를 가져 와서 세션 정보를 얻을 수 있습니다. –

관련 문제