ホームページ  >  記事  >  バックエンド開発  >  同じ名前で異なるパスを持つ Cookie

同じ名前で異なるパスを持つ Cookie

WBOY
WBOYオリジナル
2016-06-13 12:00:141172ブラウズ

同じ名前で異なるパスの 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 を設定するようにしてください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。