2017-09-17 1 views
0

두 도메인 : domain1.comdomain2.com이 있습니다. domain1.com의 서버 :쿠키 원본 교차 설정

app.get('/',(req,res,next)=>{ 
    res.redirect('domain2.com/'); 
}) 

domain2.com의 서버 :

app.get('/',(req,res,next)=>{ 
    res.cookie("name",'luoxia'); 
    res.end(); 
}) 

내가 쿠키가 domain1.com로 설정되어 있는지 발견, 왜?

쿠키를 domain2.com으로 설정하고 싶습니다. 이 작업을 수행하는 방법?

답변

1

다른 도메인의 쿠키를 설정할 수 없습니다. 이를 허용하면 막대한 보안 결함이 발생할 수 있습니다. 도메인 간 쿠키가 없습니다. foo.example.com과 bar.example.com 간에는 쿠키를 공유 할 수 있지만 example.com과 example2.com 사이에는 쿠키를 공유 할 수 없습니다. 보안상의 이유로 쿠키를 공유 할 수 있습니다.

데이터를 다른 도메인으로 전달하려는 경우이를 URL로 인코딩 할 수 있습니다. 아니면 이렇게 해킹 할 수 있습니다.

중앙 집중식 단일 도메인에서 모든 쿠키 물론

1. let's say cookiemaker.com When the user makes a request to example.com you redirect him to cookiemaker.com 
    2.cookiemaker.com redirects him back to example.com with the information you need 

, 그것은 안전하지, 그리고 당신은 그렇게 당신의 애플 리케이션 간의 내부 프로토콜의 일종을 만들어야합니다.

마지막으로, 모든 요청에 ​​대해 이와 같이 작업하는 경우 사용자에게 매우 성가 시지만, 처음 요청하는 경우에는 그렇지 않습니다.

RFC6265 참조 : 도메인 속성 가 원본 서버를 포함 할 것이다 쿠키에 대한 범위를 지정하지 않는

사용자 에이전트가 쿠키를 거부합니다. 예를 들어, 사용자 에이전트는 도메인 속성이 "example.com"또는 "foo.example.com"인 쿠키를 foo.example.com에서 허용하지만 사용자 에이전트는 쿠키를 허용하지 않습니다. "bar.example.com"또는 "baz.foo.example.com"의 도메인 속성.

참고 : 보안상의 이유로 많은 사용자 에이전트가 "공용 접미사"에 해당하는 도메인 특성을 거부하도록 구성되어 있습니다. 예를 들어, 일부 사용자 에이전트는 "com"또는 "co.uk"의 도메인 속성을 거부합니다. (자세한 내용은 5.3 절을 참조하십시오.)

1 : https://tools.ietf.org/html/rfc6265#section-4.1.2.3

+0

답장을 보내 주셔서 감사합니다,하지만 난 당신이 말한대로, 내 질문에 midunderstood 생각 example.com'이 cookiemaker'로 리디렉션 때'. com '이고'cookiemaker.com'는 쿠키를'example.com'으로 설정할 수 없지만 제 질문과 마찬가지로 쿠키가'example.com'으로 설정되어 있음을 발견했습니다. 쿠키를 'example.com'으로 설정하지 않고 'cookiemaker.com'으로 설정하고 싶습니다. – laoqiren