4

クライアントアプリを開発しています。ほとんどのアプリはWebViewで動作します。Web サーバーからいくつかのページをロードします。

ユーザーを承認した後、すべての Cookie を取得してローカルに保存します。次に、これらの Cookie をwebViewviaCookieManagerに置きますCookieSyncManager。ユーザーが特定のページをナビゲートした後、サーバーは同じ Cookie を返しますが、今回は新しい値が追加されています。その時から、Cookie のその部分を取得して同期できるようにする必要があります。

新しい Cookie を取得して以前の Cookie に置き換えるのではなく、Cookie の新しいものを見つけて現在の Cookie に追加する必要があることに注意してください。

Cookie 解析の問題と解決策を見ました。しかし、サーバーが返すものは、それらの標準的な値のペアのものとは異なります。クッキーはこんな感じ

PHPSESSID=27dd72de72e1643727c4ddb150b2f988; aes_session=a%3A12%3A%7Bs%3A10%3A%22aaaaaaaa%22%3Bs%3A32%3A%22e116b84c302d763a4f759caa5d178455%22%3Bs%3A10%3A%22bbbbbbb%22%3Bs%3A15%3A%22111.111.111.111%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A40%3A%22Apache-HttpClient%2FUNAVAILABLE+%28java+1.4%29%22%3Bs%3A13%3A%22jjjjjjjj%22%3Bi%3A1372138481%3Bs%3A9%3A%22cccccc%22%3Bs%3A0%3A%22%22%3Bs%3A4%3A%22fail%22%3Bs%3A7%3A%22ddddddd%22%3Bs%3A2%3A%22id%22%3Bs%3A2%3A%2231%22%3Bs%3A8%3A%22eeeeee%22%3Bs%3A7%3A%22ffffffff%22%3Bs%3A4%3A%22ggggggg%22%3Bs%3A9%3A%22hhhhhh%22%3Bs%3A7%3A%22%22%3Bs%3A1%3A%221%22%3Bs%3A6%3A%22iiiiii%22%3Bs%3A1%3A

iiiiiiこの例では、次の値が追加されます。

問題は、この種の Cookie を処理するパーサーがあるかどうか、または正規表現を作成する必要があるかどうかです。ご協力ありがとうございました!

4

1 に答える 1

4

仕様 ( RFC 6265 ) によると、Cookie は名前と値のペアです。RFC の構文によれば、等号 ('=') は必須です。

したがって、実装が等号文字の欠落に対処できるかどうかは議論の余地があります。等号のない Cookie は無効です。あなたのアプリケーション...またはそれらのCookieを設定しているものは何でも...壊れており、修正する必要があります.


FWIW、名前と値のペアを空の値で指定する場合は、等号 (「=」) とセミコロン (「;」) または Cookie 文字列の末尾の間に何も入れなくてもかまいません。しかし、仕様には「=」が必須であると書かれています。


(ただし、この質問について私を困惑させているのは、Cookie の例に「=」が欠落している例がないように見えることです...)

于 2013-06-25T06:45:35.017 に答える