From 0bf0720d9d585a56904081d0c8a71507d8889adf Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Tue, 28 Aug 2012 02:59:57 +0200 Subject: [PATCH] python: Remove HTTP_CONTENT_{TYPE,LENGTH} from WSGI environment. Although not strictly required by the CGI specification, many programs and libraries seem to require it. --- python/ashd-wsgi | 10 ++++++++-- python3/ashd-wsgi3 | 4 ++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/python/ashd-wsgi b/python/ashd-wsgi index 5e1db09..f20d6ca 100755 --- a/python/ashd-wsgi +++ b/python/ashd-wsgi @@ -130,8 +130,14 @@ def dowsgi(req): if "X-Ash-Server-Port" in req: env["SERVER_PORT"] = req["X-Ash-Server-Port"] if "X-Ash-Protocol" in req and req["X-Ash-Protocol"] == "https": env["HTTPS"] = "on" if "X-Ash-Address" in req: env["REMOTE_ADDR"] = req["X-Ash-Address"] - if "Content-Type" in req: env["CONTENT_TYPE"] = req["Content-Type"] - if "Content-Length" in req: env["CONTENT_LENGTH"] = req["Content-Length"] + if "Content-Type" in req: + env["CONTENT_TYPE"] = req["Content-Type"] + # The CGI specification does not strictly require this, but + # many actualy programs and libraries seem to. + del env["HTTP_CONTENT_TYPE"] + if "Content-Length" in req: + env["CONTENT_LENGTH"] = req["Content-Length"] + del env["HTTP_CONTENT_TYPE"] if "X-Ash-File" in req: env["SCRIPT_FILENAME"] = absolutify(req["X-Ash-File"]) if "X-Ash-Protocol" in req: env["wsgi.url_scheme"] = req["X-Ash-Protocol"] env["wsgi.input"] = req.sk diff --git a/python3/ashd-wsgi3 b/python3/ashd-wsgi3 index cdabec3..dcf1613 100755 --- a/python3/ashd-wsgi3 +++ b/python3/ashd-wsgi3 @@ -135,6 +135,10 @@ def dowsgi(req): ("HTTP_X_ASH_ADDRESS", "REMOTE_ADDR"), ("HTTP_CONTENT_TYPE", "CONTENT_TYPE"), ("HTTP_CONTENT_LENGTH", "CONTENT_LENGTH"), ("HTTP_X_ASH_PROTOCOL", "wsgi.url_scheme")]: if src in env: env[tgt] = env[src] + for key in ["HTTP_CONTENT_TYPE", "HTTP_CONTENT_LENGTH"]: + # The CGI specification does not strictly require this, but + # many actualy programs and libraries seem to. + if key in env: del env[key] if "X-Ash-Protocol" in req and req["X-Ash-Protocol"] == b"https": env["HTTPS"] = "on" if "X-Ash-File" in req: env["SCRIPT_FILENAME"] = absolutify(req["X-Ash-File"].decode(locale.getpreferredencoding())) env["wsgi.input"] = req.sk -- 2.11.0