Skip to content

Commit 2a805e7

Browse files
committed
fix: handle empty query param values
1 parent aa041c0 commit 2a805e7

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

revproxy/views.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010

1111
try:
1212
from django.utils.six.moves.urllib.parse import (
13-
urlparse, urlencode, quote_plus, quote
13+
urlparse, urlencode, quote_plus, quote, parse_qsl
1414
)
1515
except ImportError:
1616
# Django 3 has no six
1717
from urllib.parse import (
18-
urlparse, urlencode, quote_plus, quote
18+
urlparse, urlencode, quote_plus, quote, parse_qsl
1919
)
2020

2121
from django.conf import settings
@@ -176,8 +176,12 @@ def get_quoted_path(self, path):
176176

177177
def get_encoded_query_params(self):
178178
"""Return encoded query params to be used in proxied request"""
179-
get_data = encode_items(self.request.GET.lists())
180-
return urlencode(get_data)
179+
params = parse_qsl(self.request.GET.urlencode(), keep_blank_values=True)
180+
custom_query = '&'.join(
181+
k if v == '' else f'{k}={v}'
182+
for k, v in params
183+
)
184+
return custom_query
181185

182186
def _created_proxy_response(self, request, path):
183187
request_payload = request.body

0 commit comments

Comments
 (0)