diff options
Diffstat (limited to 'wsgitools')
-rw-r--r-- | wsgitools/digest.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/wsgitools/digest.py b/wsgitools/digest.py index ffdf063..5b101e5 100644 --- a/wsgitools/digest.py +++ b/wsgitools/digest.py @@ -688,10 +688,14 @@ def check_uri(credentials, environ): if not uri.startswith(environ["SCRIPT_NAME"]): raise AuthenticationRequired("url mismatch") uri = uri[len(environ["SCRIPT_NAME"]):] - if environ.get("PATH_INFO"): - if not uri.startswith(environ["PATH_INFO"]): + path_info = environ.get("PATH_INFO") + if path_info: + if uri.startswith(path_info): + uri = uri[len(path_info):] + elif path_info.startswith("/") and uri.startswith(path_info[1:]): + uri = uri[len(path_info)-1:] + else: raise AuthenticationRequired("url mismatch") - uri = uri[len(environ["PATH_INFO"]):] if uri not in ('', '?'): raise AuthenticationRequired("url mismatch") |