Merge pull request #2886 from tran-tien-dat/set-cookie

Parse Set-Cookie header more permissively. Fix #2829
This commit is contained in:
Aldo Cortesi 2018-02-24 10:49:33 +13:00 committed by GitHub
commit 16dd7f3ddf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 5 deletions

View File

@ -159,13 +159,17 @@ def _read_set_cookie_pairs(s: str, off=0) -> Tuple[List[TPairs], int]:
if len(rhs) <= 3:
trail, off = _read_value(s, off + 1, ";,")
rhs = rhs + "," + trail
if rhs or lhs:
# as long as there's a "=", we consider it a pair
pairs.append([lhs, rhs])
# comma marks the beginning of a new cookie
if off < len(s) and s[off] == ",":
cookies.append(pairs)
pairs = []
elif lhs:
pairs.append([lhs, rhs])
# comma marks the beginning of a new cookie
if off < len(s) and s[off] == ",":
cookies.append(pairs)
pairs = []
off += 1

View File

@ -142,6 +142,27 @@ def test_cookie_roundtrips():
def test_parse_set_cookie_pairs():
pairs = [
[
"=",
[[
["", ""]
]]
],
[
"=;foo=bar",
[[
["", ""],
["foo", "bar"]
]]
],
[
"=;=;foo=bar",
[[
["", ""],
["", ""],
["foo", "bar"]
]]
],
[
"=uno",
[[