proxy request: forward json content type and parameters

instead of always trying to encode them as x-www-form-urlencoded

Acked-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2023-06-06 15:08:48 +02:00 committed by Wolfgang Bumiller
parent ded13125c2
commit f398a3d94b

View File

@ -745,11 +745,16 @@ sub proxy_request {
my $content; my $content;
if ($method eq 'POST' || $method eq 'PUT') { if ($method eq 'POST' || $method eq 'PUT') {
$headers->{'Content-Type'} = 'application/x-www-form-urlencoded'; if ($reqstate->{request}->header('Content-Type') =~ 'application/json') {
# use URI object to format application/x-www-form-urlencoded content. $headers->{'Content-Type'} = 'application/json';
my $url = URI->new('http:'); $content = encode_json($params);
$url->query_form(%$params); } else {
$content = $url->query; $headers->{'Content-Type'} = 'application/x-www-form-urlencoded';
# use URI object to format application/x-www-form-urlencoded content.
my $url = URI->new('http:');
$url->query_form(%$params);
$content = $url->query;
}
if (defined($content)) { if (defined($content)) {
$headers->{'Content-Length'} = length($content); $headers->{'Content-Length'} = length($content);
} }