하위 도메인에서 작동하지 않는 쿠키


11

에 메인 사이트가 example.com있습니다. 로그인하면 example.com/admin제대로 작동합니다.

그러나 테스트 사이트에서 test.example.com/admin먼저 모든 example.com쿠키를 삭제하지 않으면 관리자에 로그인 할 수 없습니다 . 그런 다음 로그인 할 수 있지만 example.com/admin테스트 서버에서 다음에 클릭하면 로그인 페이지로 돌아갑니다.

이것이 고객 로그인에 영향을 미치는지 모르겠습니다.

기본 사이트 나 테스트 사이트에이 문제를 해결할 구성이 있습니까?

답변:


14
  1. 관리 메뉴에서 시스템> 구성을 선택하십시오. 그런 다음 왼쪽 패널의 일반에서 웹을 클릭하십시오.
  2. 세션 쿠키 관리 섹션을 펼치십시오.

에서 example.com쇼핑, 다음을 설정합니다

  1. 쿠키 도메인을 example.com으로 설정하십시오 (대개이 설정은 앞에 점이있는 .example.com입니다.이 경우에는 시도하지 않아도됩니다).

에서 test.example.com쇼핑, 다음을 설정합니다

  1. 테스트 환경에서 쿠키 도메인을 .test.example.com으로 설정하십시오. (도메인 앞의 "."는 여기에 좋습니다)

2
.도메인 앞의 3 단계에 대한 참고 사항 만 중요합니다.
B00MER

안녕 안나. example.com관리자, test.example.com관리자 또는 둘 다 에서 쿠키 도메인을 ".example.com"으로 설정해야합니까 ?
Buttle Butkus 2016 년

기본 구성으로 설정했습니다 (example.com 관리자 인 것 같습니다). 따라서 이것은 모든 범위에서 .example.com을 의미합니다.
안나 VOLKL

@ AnnaVölkl 확실하지 않습니다. 서로 다른 두 대의 컴퓨터에 두 개의 완전히 분리 된 magento 설치가 있다는 것을 알고 있습니까? 하나는 example.com, 다른 하나는 사용 합니다 test.example.com. 그들은 모두 자신의 관리자가 있습니다. 그러나 관리자 중 하나의 도메인을 설정하라는 메시지 만 표시됩니다. 다른 쪽을 비워 두어야한다고 말씀하십니까?
Buttle Butkus

아, 알겠습니다 실제로 나는 이것이 2 개의 분리 된 설치라는 것을 알지 못했습니다. 본점은 www-Domain의 유무에 관계없이 운영됩니까? 쿠키 겹침을 피하기 위해 테스트의 쿠키 도메인을 test.example.com메인 샵과 메인 샵으로 www.example.com설정할 수 있습니다.
Anna Völkl 2016 년

9

Anna는 좋은 점을 제시하고 그녀의 답변은 많은 사람들에게 효과가 있지만 저에게는 그렇지 않습니다. 아마도 내 문제는 그녀가 다루는 것보다 훨씬 근본적이었습니다.

내 솔루션은 사이트의 도메인을에서 (으) example.com로 변경하는 것이 었 습니다 www.example.com. 실제로 인터넷에 대한 나의 연구에 따르면 Amazon, Google, Ebay 및 기타 모든 주요 웹 대상과 같은 사이트가 www접두사를 사용하는 이유는 쿠키의 작동 방식으로 인해 상당 부분이 될 수 있습니다. 아마.

쿠키가 작동하는 기본 방식은 모든 하위 도메인에 적용되는 것입니다. 그래서 만약 example.com당신에게 쿠키를 전송, 당신은 방문 mail.example.com, smile.example.com또는 devsite.example.com, 당신의 브라우저는 해당 사이트에 그 쿠키를 전송하고 해당 사이트는 쿠키를 사용하려고합니다. 그러나 모두 공통 세션 폴더를 사용하지 않으면 세션을 찾을 수 없습니다. 심지어 다른 데이터베이스 구성, 다른 애플리케이션 구조 등으로 인해 문제가 발생할 수 있습니다.

루트 htaccess 파일에서 301 리디렉션을 생성하고, magento core_config_data데이터베이스 테이블 에서 보안 / 비보안 URL을 변경하고 , ServerNameApache 에서 사이트를 변경하고 VirtualHosts, DNS / 이름 서버 설정을 업데이트하는 변경 작업이 포함되었습니다. 그러나 그만한 가치가있었습니다.

내 기본 사이트를 만들면 www.example.com쿠키는 이제 하위 도메인에만 적용됩니다 mail.www.example.com(우리는 이러한 하위 도메인이 없음). www.example.com쿠키 를받는 클라이언트 브라우저는 쿠키를 보내지 않으며 devsite.example.com문제가 해결되었습니다. 또한 www도메인 이름 앞에 있는 것이 좋습니다 .


1
이 답변에 대해 여러 개의 투표를 할 수 있기를 바랍니다. 몇 달 동안 해결책을 찾고 있는데 모두 쿠키 경로와 쿠키 도메인에 대해 계속 이야기하지만 www를 사용하지 않으면 문제가 해결되지 않습니다. 감사합니다!!
Bruno Monteiro

우리는 이미 쿠키 도메인에 www를 가지고 있지만 여전히 실패합니다 ...
Black

여전히 실패하는 것은 무엇입니까?
Buttle Butkus

3

하위 도메인의 관리 HTML 쿠키 이름을 간단히 변경할 수 있습니다.

파일에 두 변경 app/code/core/Mage/Core/Controller/Varien/Action.php.

기능 preDispatch변경 라인에서

/** @var $session Mage_Core_Model_Session */
$session = Mage::getSingleton('core/session', array('name' => $this->_sessionNamespace))->start();

$namespace = $this->_sessionNamespace.($_SERVER['SERVER_NAME']=='subdomain.example.com'?'_subdomain':'');
/** @var $session Mage_Core_Model_Session */
$session = Mage::getSingleton('core/session', array('name' => $namespace))->start();

기능 setRedirectWithCookieCheck변경

/** @var $session Mage_Core_Model_Session */
session = Mage::getSingleton('core/session', array('name' => $this->_sessionNamespace));

$namespace = $this->_sessionNamespace.($_SERVER['SERVER_NAME']=='subdomain.example.com'?'_subdomain':'');
/** @var $session Mage_Core_Model_Session */
$session = Mage::getSingleton('core/session', array('name' => $namespace));

그리고 그 텍스트를 검색 한 후

Mage::getSingleton('core/session', array('name' => 'adminhtml'));

모든 파일에서

Mage::getSingleton('core/session', array('name' => 'adminhtml'.($_SERVER['SERVER_NAME']=='subdomain.example.com'?'_subdomain':'')));

발생하는 경우.


1
코드가 클라이언트와 서버 쿠키 상호 작용을 변경하여 세션을 분리하는 방법을 단어로 설명 할 수 있습니까?
Buttle Butkus

@ButtleButkus 문제는 example.com/admin adminhtml이 도메인 이름 으로 쿠키를 설정한다는 것 .example.com입니다. test.example.com/admin에서 권한을 부여하려고하면에 대한 쿠키 adminhtml로 무언가를 시도합니다 .test.example.com. 마 젠토 설정에 따라 문제가 다릅니다. 주요 문제는 하위 도메인에서 기본 도메인의 쿠키를 수정할 수 없다는 것입니다. 위의 코드는 Magento가 adminhtmlexample.com의 쿠키 adminhtml_subdomain와 subdomain.example.com의 쿠키를 생성 하므로 어떤 식 으로든 혼합되지 않습니다. subdomain사용하는 올바른 것으로 변경하십시오 .
maxvgi

그것은 관리자 측에 좋습니다. 그러나 프론트 엔드 측도 이런 종류의 솔루션에서 쿠키 이름을 변경해야합니다.
Buttle Butkus

@ButtleButkus 당신이 맞아요. 죄송합니다. 이런 종류의 문제가 없었기 때문에 이것을 쓰지 않았습니다.
maxvgi

그것은 여전히 ​​일부 사람들에게 유용합니다.
Buttle Butkus

0

쿠키 문제로 인해 여전히 프론트 엔드에 로그인 할 수없는 경우 (고객 세션을 만들 수 없음) 해당 코어 파일을 재정의하십시오.

1.8.x 이전 버전-app / code / core / Mage / Customer / Model / session.php

1.8.x부터 버전 앱 / 코드 / 코어 / 마법사 / 코어 / 모델 / 세션 /Abstract.php

이 글타래에서 지적한 줄을 주석 처리하십시오. 1.8.x 이전 버전 저장소의 프론트 엔드에서 고객 로그인 문제가 수정되었습니다.

/magento//a/34057/695

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.