2010-02-18 7 views
3

표준 페이지에는 www.example.com, HTTPS에는 secure.example.com을 사용하는 사이트가 있습니다. 사용자가 로그인 할 때 HTTPS 버전의 HTTP & HTTPS 버전 모두에서 유효한 쿠키를 설정하려고합니다.Google 크롬 쿠키 - HTTP 및 HTTPS

경로를 "/"로 설정하고 도메인을 ".example.com"으로 설정하면됩니다. Firefox 및 Internet Explorer에서는 정상적으로 작동하지만 Chrome에서는 쿠키가 설정된 사이트의 버전에서만 작동합니다 (http://www.example.com 또는 https://secure.example.com)

이 문제는 무엇인가 잘못 되었나요? 아니요. 버그 일 경우 해결 방법이 있습니까?

쿠키는 PHP에서 헤더로 설정됩니다.

setcookie("login",base64_encode($email."::".md5($password)),2840184012,"/",".example.com"); 

답변

4

HTTP와 HTTPS 모두에 대해 쿠키를 동시에 설정할 수 없습니다. 당신은 두 개의 별도의 쿠키, HTTPS에 대한 HTTP 하나 하나를 설정해야합니다

setcookie("login", base64_encode($email."::".md5($password)), 2840184012, "/", ".example.com"); 
setcookie("login", base64_encode($email."::".md5($password)), 2840184012, "/", ".example.com", true); 

만 HTTPS를 통해 보안 쿠키를 설정할 수 있습니다 당신이 https://secure.example.com에 쿠키를 설정 한 경우에만 작동 않습니다.

아, 그런데 : 아니요 쿠키에 인증 정보를 저장하십시오! 한 번 유효한 인증 토큰을 대신 사용하십시오.

+0

제안한대로 시도했지만 여전히 Chrome에서는 작동하지 않습니다. 이것이 쿠키를 설정 한 직후 헤더 ("위치 : http://www.example.com")를 사용하고 있습니까? – Tim

+1

@ 팀 : HTTPS를 통해 쿠키를 설정하고 있습니까? – Gumbo

+0

예 올바른지 HTTPS에서 테스트했습니다. 쿠키는 HTTPS 사이트에서만 작동하는 Chrome을 제외한 모든 브라우저에서 HTTP 및 HTTPS 사이트에서 작동합니다. – Tim