Cookieがサブドメインで機能しない


11

にメインサイトがありexample.comます。ログインexample.com/adminは正常に機能します。

しかし、テストサイトでtest.example.com/adminは、最初にすべてのexample.comCookieを削除しないと管理者にログインできません。その後、ログインできますが、ログインしてすぐにexample.com/adminテストサーバーをクリックすると、ログインページに戻ります。

これがお客様のログインに影響するかどうかはわかりません。

この問題を解決するいくつかの構成がメインサイトまたはテストサイトにありますか?

回答:


14
  1. [管理]メニューで、[システム]> [構成]を選択します。次に、左側のパネルの[全般]で、[Web]をクリックします。
  2. セッションCookie管理セクションを展開します。

example.com店、次のように設定します。

  1. Cookieドメインをexample.comに設定します(通常、この設定は、ドットが前に付いた.example.comになります。この場合、この設定なしで試すことができます)。

test.example.com店、次のように設定します。

  1. テスト環境でCookieドメインを.test.example.comに設定します。(ドメインの前の「。」はここでは問題ありません)

2
.ドメインの前のステップ3についてのメモは重要です。
B00MER 2015年

こんにちはアンナ。example.com管理者、test.example.com管理者、またはその両方でCookieドメインを「.example.com」に設定する必要がありますか?
Buttle Butkus

私はそれをデフォルトの設定として設定します(これはあなたのexample.com管理者だと思います)。つまり、これはすべてのスコープで.example.comを意味します。
AnnaVölkl15年

@AnnaVölklわかりません。私は2つの異なるマシンに2つの完全に独立したmagentoインストールがあることを理解していますよね?1つは使用しexample.com、もう1つは使用しtest.example.comます。どちらにも独自の管理者がいます。しかし、管理者の1人にドメインを設定するように言っているだけです。他は空欄にしておくべきですか?
バトルButkus

ああ、分かった。実際、私はこれらが2つの別々のインストールであることを認識していませんでした。メインショップはwww-Domainの有無にかかわらず実行されますか?テストtest.example.comとメインショップでCookieドメインを設定すると、www.example.comCookieの重複を回避できます。
AnnaVölkl15年

9

アンナはいくつかの良い点を作り、彼女の答えは多くの人にとってうまくいきますが、私には役に立たないので、私は自分の答えを投稿しています。おそらく、私の問題は彼女が取り組む問題よりもはるかに根本的なものだったのでしょう。

私の解決策は、サイトのドメインをからexample.comに変更することwww.example.comでした。実際、インターネットに関する私の調査では、Amazon、Google、Ebay、およびその他すべての主要なWeb宛先がwwwプレフィックスを使用する理由の大部分は、Cookieの動作方法が原因である可能性があることを示唆しています。そうでないかもしれない。

Cookieが機能するデフォルトの方法は、すべてのサブドメインに適用されることです。したがってexample.com、がCookieを送信した場合、、、またはにアクセスするmail.example.comsmile.example.comdevsite.example.comブラウザがそのCookieをこれらのサイトに送信し、それらのサイトがCookieを使用しようとします。ただし、すべてのユーザーが共通のセッションフォルダーを使用しない限り、ユーザーはセッションを見つけることができません。それでも、データベース構成やアプリケーション構造が異なるために問題が発生する可能性があります。

変更を行うには、ルートhtaccessファイルに301リダイレクトを作成し、magento core_config_dataデータベーステーブルのセキュア/非セキュアURLを変更し、ServerNameApache のサイトを変更し、VirtualHostsDNS /ネームサーバー設定を更新しました。しかし、それだけの価値はありました。

私のメインサイトを作成することによりwww.example.com、そのCookieはそのようなサブドメインにのみ適用されるようになりますmail.www.example.com(そのようなサブドメインはありません)。www.example.comCookie を取得するクライアントブラウザはに送信せずdevsite.example.com、問題は解決しました。さらにwww、ドメイン名の前にを付けると本当に便利です。


1
この回答に複数の賛成票を投じたいと思います。私は何ヶ月もの間解決策を探していて、誰もがCookieパスとCookieドメインについて言い続けていますが、wwwを使用しなければ問題は解決しません。ありがとうございました!!
ブルーノモンテイロ

wwwは既にcookieドメインにありますが、それでも失敗します...
Black

それでも何が失敗しますか?
Buttle Butkus

3

サブドメインのadminhtml cookie名を変更するだけです。

ファイルの2つの変更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
セッションを分離するために、コードがクライアントとサーバーのCookieの相互作用をどのように変更するかを言葉で説明できますか?
Buttle Butkus 2017年

@ButtleButkus問題は、example.com / adminがadminhtmlドメインの名前でCookieを設定することです.example.com。test.example.com/adminで認証しようとすると、のCookie adminhtmlを使用して何かを試み.test.example.comます。Magentoの設定によって問題が異なります。主な問題は、メインドメインのCookieをサブドメインから変更できないことです。上記のコードにより、Magento adminhtmlはexample.comのCookie adminhtml_subdomainとsubdomain.example.comのCookieを作成するため、これらが混在することはありません。subdomain使用する正しいものに変更してください。
maxvgi

これは管理者にとっては良いことです。しかし、この種のソリューションでは、フロントエンド側もCookie名を変更する必要がありますよね?
Buttle Butkus 2017年

@ButtleButkus正解です。申し訳ありません、私はそのような問題がなかったので、これを書きませんでした。
maxvgi

それは大丈夫ですが、おそらく一部の人々にとってはまだ有用です。
Buttle Butkus 2017年

0

Cookieの問題が原因でまだフロントエンドにログインできない(顧客セッションを作成できない)場合は、それぞれのコアファイルをオーバーライドしてください。

1.8.xより前。バージョン-app / code / core / Mage / Customer / Model / session.php

そして

1.8.xから バージョンapp / code / core / Mage / Core / Model / Session / Abstract.php

このスレッドで指摘された行をコメント化します。これにより、1.8.xより前のバージョンのストアのフロントエンドでの顧客ログインの問題が修正されました。

/magento//a/34057/695

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.