Made QUERY_STRING mandatory.

According to CGI/1.1 RFC 3875:

   The server MUST set this variable; if the Script-URI does not include a
   query component, the QUERY_STRING MUST be defined as an empty string ("").

Python's PEP 333(3) allows omitting it in WSGI interface; PHP docs force no
requirements; PSGI and Rack specifications require it even if empty.

When nginx proxies requests over FastCGI, it always provides QUERY_STRING.
and some PHP apps have been observed to fail if it is missing (see issue
#201 on GitHub).

A drawback of this change (besides a small overhead) is that there will be
no easy way to tell a missing query string from an empty one (i.e. requests
with or without the "?" character); yet, it's negligible compared to the
possible benefits of wider application compatibility.

This closes #226 issue on GitHub.
This commit is contained in:
Valentin Bartenev
2019-02-28 20:20:41 +03:00
parent 7ce6f05975
commit a5dd0f8aa9
5 changed files with 7 additions and 18 deletions

View File

@@ -65,7 +65,6 @@ class TestUnitPythonApplication(unit.TestUnitApplicationPython):
self.assertEqual(resp['headers']['Query-String'], '',
'query string empty')
@unittest.expectedFailure
def test_python_application_query_string_absent(self):
self.load('query_string')