16

開発環境と言語の組み合わせを使用して作成しているアプリケーションでは、それぞれ別のホストにある 2 つの異なるサブドメインから Cookie にアクセスする必要があります。

次の PHP コードを使用して Cookie が設定されており、別のホストwww.mydomain.comからアクセスしようとしています。distant.mydomain.com

setcookie('token', base64_encode(serialize($token)), time()+10800, '/', '.mydomain.com');  

distant.mydomain.com次のコードを使用し て Cookie にアクセスしようとしています。

if (isset($_COOKIE['token'])) { /* do stuff */ }  

問題: distant.mydomain.comCookie が見つからない。 Cookie が存在する場合でも、前述のifステートメントは false を返します。

設定されている Cookie が次のものであることを確認しましたmydomain.com(Firefox の Cookie を確認して)。これが機能しない理由は考えられません。

同じsetcookieコードを使用して、ホスト上で排他的に実行されている古いアプリケーションがwww.mydomain.comあり、そのアプリケーションはドメイン間で Cookie にアクセスできます。これにより、問題は別のホストに関係していると思われます。

次のいずれかの情報が該当する場合:
- www.mydomain.comIIS 6.0であるか
- distant.mydomain.comApache 2.2.9 であるか
- 両方のサーバーが PHP 5.2.x を使用
している - 両方のサーバーが Windows Server 2003 で動作している

問題をより適切に説明するために提供できる情報がさらにある場合は、お知らせください。

4

5 に答える 5

4

ドメインに設定された Cookie

'.aaa.sub.domain.com'

ドメインに設定された同名の Cookie と衝突します

'.sub.domain.com'

'.some.stupidly.obscure.multi.sub.domain.com'

つまり、複数のドメインで同じ名前の Cookie を使用する場合は、メイン/ベース ドメイン (この場合は '. domain.com'; それ以外の場合、結果の Cookie は不確定かつランダムに返され、.a.sub.domain.com に設定された Cookie「jasper」、.sub.domain.com に設定された Cookie「jasper」、場合によっては Cookie「 jasper」が .bcddomain.com に設定され、Cookie「jasper」が「.sub.domain.com」に設定され、Cookie「jasper」が「.domain.com」に設定されることもあります

于 2011-03-14T03:20:02.450 に答える
3

サブドメインの 1 つがアンダースコアを使用していますか? IE は、URI RFC に従っていないサブドメインからの Cookie の受け入れに問題があります。

これは、「distant」がプレースホルダーであり、実際のサブドメイン名ではなく、もちろん IE を使用していることを前提としています。より多くのブラウザーが as の影響を受ける可能性は十分にありますが、Fireworks はそうではありません。

于 2008-12-17T23:56:45.043 に答える
1

Charles Proxyをインストールしてみて、a) Firefox に最初に (Cookie を設定するために) 送信されるヘッダーと、b) Firefox から 2 番目のサーバーに送信されるヘッダーを確認します。少なくとも、問題がどこにあるか (ブラウザーまたはサーバー) を絞り込むことができます。

于 2008-12-18T00:38:06.117 に答える