同じ名前で異なるパスの COOKIE
1 つのプロジェクト内で、複数の COOKIE を使用してユーザーのステータスを共同で決定します
背景は次のとおりです
userid usercode username
3 つの COOKIE、すべて存在する場合は、セッションが存在するかどうかを判断します。そうでない場合は、Cookie を削除し、ユーザーに再度ログインを促します
最初は JS を使用して COOKIE を生成していましたが、その後、別の理由により PHP 生成に切り替えました。テスト中に、ログインとホームページの間に無限ループがあることがわかりました
COOKIE の状況を確認すると、JS によって生成されたものがまだ存在していることがわかりました。テストしたとき、プロジェクトはサブディレクトリで実行されていました。 、したがって、PHP はそれらをクリアしませんでした。実験と Baidu の後、
同じ名前の異なるパスが複数あることがわかりました。ページがルート ディレクトリにある場合は、その下のパスを取得します。ディレクトリ
ページがサブディレクトリにある場合は、サブディレクトリの下のページを取得します
http://jinnianshilongnian.iteye.com/blog/ 1656534 ここで学習
Java のツール/フレームワークの使用.net.HttpURLConnection の場合、同じパスに同じ名前の Cookie が複数ある場合は、最初の Cookie が取得されます。
Apache HttpClient を使用すると、ブラウザの動作と同じように最後の Cookie が取得されます。
つまり、最新の COOKIE が取得されます
が、IE と Google Chrome を使用して、
サブディレクトリ下のページが取得されます。 PATH が現在のディレクトリの COOKIE の順に取得し、それが取得されていれば時間に関係なく返します。最新の COOKIE を取得する方法に従っていません
その場合、私のプロジェクトのロジックによれば、PHP はどのディレクトリの COOKIE を取得したかを知ることができず、この COOKIE を削除することができず、混乱してしまいます。無限ループを続けます。 。 。解決
------解決策---------------------ブラウザごとに違いがあります。
例:
/ の下に Cookie (actionType) を作成する場合、Firefox では、/a の下に同じ名前の Cookie がある場合、Firefox は /a の下の Cookie を直接読み取り、/ の下の Cookie を無視します。つまり、/a のアクションが空の場合、Firefox は、同じ名前の親 Cookie に関係なく、そのアクションを空であると見なします。これに対して、IE は、 / の下の cookie (アクション)。 /a の下の cookie を読み取るとき、/a の下の cookie が空であっても、IE は同じ名前の親 cookie を読み取ります。これは、親パス cookie と子パス cookie を読み取ることと同じです。一緒に。ただし、このパス Cookie が最初に読み取られます。
したがって、Cookie を使用する場合は、サーバーが Cookie を設定するようにしてください。