aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-07-09 13:20:45 -0700
committerGitHub <noreply@github.com>2016-07-09 13:20:45 -0700
commitdc6266e08e58a2ec7a6660e125ddc585916f4dcd (patch)
tree967ae4b327074a93cb37d87876cd91c4cc976a5c /netlib
parent7efd63f94c5871ab6f93a1e39355cb37d9d6e107 (diff)
parent7eade1ef7c24b98567c1657973290aa5377b2719 (diff)
downloadmitmproxy-dc6266e08e58a2ec7a6660e125ddc585916f4dcd.tar.gz
mitmproxy-dc6266e08e58a2ec7a6660e125ddc585916f4dcd.tar.bz2
mitmproxy-dc6266e08e58a2ec7a6660e125ddc585916f4dcd.zip
Merge pull request #1324 from dufferzafar/sticky-cookies
Delete stickycookies when told by the server
Diffstat (limited to 'netlib')
-rw-r--r--netlib/http/cookies.py29
1 files changed, 28 insertions, 1 deletions
diff --git a/netlib/http/cookies.py b/netlib/http/cookies.py
index 768a85df..dd0af99c 100644
--- a/netlib/http/cookies.py
+++ b/netlib/http/cookies.py
@@ -1,7 +1,8 @@
import collections
+import email.utils
import re
+import time
-import email.utils
from netlib import multidict
"""
@@ -260,3 +261,29 @@ def refresh_set_cookie_header(c, delta):
if not ret:
raise ValueError("Invalid Cookie")
return ret
+
+
+def is_expired(cookie_attrs):
+ """
+ Determines whether a cookie has expired.
+
+ Returns: boolean
+ """
+
+ # See if 'expires' time is in the past
+ expires = False
+ if 'expires' in cookie_attrs:
+ e = email.utils.parsedate_tz(cookie_attrs["expires"])
+ if e:
+ exp_ts = email.utils.mktime_tz(e)
+ now_ts = time.time()
+ expires = exp_ts < now_ts
+
+ # or if Max-Age is 0
+ max_age = False
+ try:
+ max_age = int(cookie_attrs.get('Max-Age', 1)) == 0
+ except ValueError:
+ pass
+
+ return expires or max_age