2012-03-13 7 views
1

여러 도메인간에 동일한 세션을 "공유"하려면 두 개의 세션에 동일한 데이터베이스/memcache 키가 있어야합니다.도메인 간/브라우저 간 쿠키 전송

예를 들어 foo.com과 bar.com이 본질적으로 동일하기를 원합니다. 분명히 사용자가 두 도메인을 개별적으로 이동 (foo.com 방문, 로그인, bar.com 입력)하는 경우는 아닙니다. 그러나 다른 도메인으로 리디렉션하면 가능합니다 (예 : bar.com).

bar.com/x는 _cookie_key 매개 변수를 감지 한 후 키 ABC 대신를 사용하여 쿠키 저장소에서 세션을 검색 할 수

foo.com의 일부 미들웨어를 foo.com/y?_cookie_key=abc 리디렉션 그렇지 않으면 무엇이든지했을 것입니다. 미들웨어는 해당 키를 기반으로 현재 세션을 설정하고이를 도메인/브라우저의 쿠키에 대한 새로운 쿠키 저장소 키로 설정합니다.

이론적으로는 가능하지만 다소 털이 많은 것으로 보이며 해킹 랙이 필요할 수도 있습니다. 나는 누군가가 전에 이것을했고 어떤지도 나 억지력을 제공 할 수 있기를 바라고있다.

+0

foo에 설정된 쿠키가 바에 전송되지 않는 것이 문제가 아닙니까? 공유 된 db/redis/etc not cookie에 세션을 저장하는 경우 세션 ID로 리디렉션 할 수 있습니다. 그러나 쿠키는 여전히 일부 자격 증명을 저장해야합니다. 나는 전문가의 대답에도 관심이있다. –

답변

0

는 어떤 당신이 통과,

난 당신이 server_name은 주 도메인 있는지 확인하고 만약 수 없다고 생각 같은 코드/DB를 사용하는 하나 개의 중앙 도메인과 여러 주차 도메인을 가지고 미들웨어 스크립트가 말할 수 301 리디렉션은 쿠키의 데이터를 가져옵니다. 따라서 사용자는 거기에서 리디렉션됩니다. 및 리디렉션 링크를 다시 참조 링크로 리디렉션하고 리디렉션 루프를 중지하는 수신 플래그 추가 (기본 검사에서이 플래그가 설정 해제되어 있는지 확인)

그리고이 모든 게시물과 리디렉션이 ajax를 통해 발생하는 경우 사용자는 아무 것도 볼 수 없습니다.