4

私は自分のウェブサイト (まったく同じソース コード、ユーザー ログインの詳細も含む) を 2 台の異なるコンピューターで実行しており、それぞれに独自の apache があります。ユーザーは、ポート フォワード設定を介して両方の Web サイトにアクセスできます。

たとえば、コンピューター A の Web サイトにアクセスするには 10.10.10.10:81、コンピューター B の Web サイトにアクセスするには 10.10.10.10:82 とします。

ユーザーは、どちらにアクセスしても問題ありません。ユーザーが同じインターネットブラウザを使用して同時に両方にアクセスしたいまで。

コンピューター B の Web サイトにログインすると、コンピューター A の Web サイトからログアウトされます。

なぜこれが起こるのですか?同じ IP アドレスが同じセッション ID を自動生成するためですか? ポートが異なれば、セッション ID も異なりますか? これを回避する方法は?手動でセッション ID を生成しますか? この問題の他の解決策はありますか?

ありがとうございました。

4

3 に答える 3

2

Cookie はポートに固有のものではありません。

これは、 10.10.10.10: 81で実行されるサーバーがCookie sessionId=123455 を設定すると、同じ Cookie が 10.10.10.10: 80で実行されるサーバーに送信されることを意味します。それはあなたが説明したシナリオにつながります

  • ユーザーはサーバー 10.10.10.10 にアクセスします: 81
  • 10.10.10.10: 81サーバーがそのユーザーのセッションを確立し、Cookie を設定します。
  • ユーザーはサーバーにログインし、セッションを使用してブラウズできます。
  • その後、ユーザーは 10.10.10.10: 80に移動し、ブラウザーは 10.10.10.10: 81によって設定されたセッション Cookie を送信します。
  • 10.10.10.10: 80は 10.10.10.10: 81のセッションについて何も知らないため、新しいセッションを確立し、古いセッション Cookie を上書きする新しいセッション Cookie を設定します。
  • 新しいセッション Cookie は 10.10.10.10: 80でのみ有効であるため、ユーザーは 10.10.10.10: 81でログアウトされます。

ソリューション

  • (推奨) セッション Cookie に別の名前を設定する OR
  • セッション Cookie ヘッダーを設定するときに、ポート パラメータを渡すようにサーバーを構成します。これにより、Cookie がドメインとポートの組み合わせに固有になります。すべてのブラウザーがこのパラメーターを正しく処理するわけではないため、可能であればこの解決策は避けてください。
于 2013-11-24T03:31:46.687 に答える
0

多くの情報を提供していませんが、Cookieを使用してセッションが維持されており、両方のサイトへのアクセスを取得するために同じドメイン名が使用されている場合、Cookieは両方のサイトへのリクエストに適用されます。

ユーザーが(同じブラウザーインスタンスを使用して)サイトAからサイトBに切り替えると、セッションCookieが送信されますが、既存のセッションIDとは一致しません。そのため、新しいセッションIDがサイトBによって生成され、「 "セッションCookie。

これを解決するための2つの一般的なアプローチ-2つのサイトに2つの異なるドメイン名を使用するか、他の方法でセッションCookieを区別します。サイトAとサイトBのセッションCookieに使用する別の名前を設定することで、これを実行できる場合があります。これを実行する詳細は、サイトAとBの作成に使用されているテクノロジによって異なります。約。

于 2012-11-16T08:55:11.997 に答える