2011-12-29 9 views
0

私がサポートする必要があるcentainのWebクライアントは、HTTPヘッダーでCookieヘッダーをアプリケーションに2回送り返しています。これにより、PHPはクッキーの正しい値を読み取ることができず、セッションを無視します。 。PHPのクッキーの処理

は、PHPのバグということです:私は2つの質問がある

GET/HTTP/1.1 
Cache-Control: max-age=0 
Accept-Language: en-US 
Cookie: PHPSESSID=49af82ddf12740e6a35b15985e93d91a 
Connection: Keep-Alive 
Cookie: PHPSESSID=49af82ddf12740e6a35b15985e93d91a 
[...] Other irrelevant headers 

:ここ

は、私が見てい要求の関連部分ですか?クライアントが同じヘッダを2回送信したときの動作は未定義ですか?

アプリケーションでCookie(およびセッション)の正しい値を読み取るために、手動でHTTPヘッダーを解析する必要がないようにすばやく回避する方法がありますか?または、HTTPヘッダーを手動で解析してセッションを正しい値に設定する必要がありますか?

+0

あなたはどのサーバーソフトウェアを使用していますか? –

+0

LAMPスタック、フレームワークなし。 – Pat

答えて

1

HTTPの仕様によれば、二重ヘッダは、単にそれを作る、コンマ一緒値を連結:

Cookie: PHPSESSID=49af82ddf12740e6a35b15985e93d91a, PHPSESSID=49af82ddf12740e6a35b15985e93d91a 

PHPはクッキーを解析することができなければならないが、セッションの動作は場合が未定義です2つのセッションIDです。

クライアントの修正を強くおすすめします。それがオプションでない場合は、ヘッダを手動で解析する必要があります。

+0

ありがとう、私はクライアントがすぐに固定することができるかどうかを確認しようとします – Pat

+0

私はこの動作を説明する仕様で参照を見つけることができませんでした、あなたは私をリンクできますか? – Pat

+0

*同じフィールド名を持つ複数のメッセージヘッダーフィールドは、そのヘッダーフィールドのフィールド値全体がカンマ区切りリスト(つまり、#(値))として定義されている場合に限り、メッセージに存在することができます。メッセージのセマンティクスを変更せずに、複数のヘッダフィールドを1つの "field-name:field-value"のペアにまとめることができなければならない(MUST)セクション4.2](http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2) –