From 9c1388daf144494f1b88fe2d6f2b6356a8cb900a Mon Sep 17 00:00:00 2001 From: Daniel Tschlatscher Date: Wed, 7 Sep 2022 10:56:28 +0200 Subject: [PATCH] acknowledge content-disposition header Acknowledging the Content-Disposition header makes it possible for the backend to tell the browser whether a file should be downloaded, rather than displayed inline, and what it's default name should be. Signed-off-by: Daniel Tschlatscher --- src/PVE/APIServer/AnyEvent.pm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/PVE/APIServer/AnyEvent.pm b/src/PVE/APIServer/AnyEvent.pm index 877a4e6..130727b 100644 --- a/src/PVE/APIServer/AnyEvent.pm +++ b/src/PVE/APIServer/AnyEvent.pm @@ -426,6 +426,7 @@ sub send_file_start { if (ref($download) eq 'HASH') { $mime = $download->{'content-type'}; my $encoding = $download->{'content-encoding'}; + my $disposition = $download->{'content-disposition'}; if ($download->{path} && $download->{stream} && $reqstate->{request}->header('PVEDisableProxy')) @@ -438,6 +439,7 @@ sub send_file_start { Content_Type => $mime, ); $header->header('Content-Encoding' => $encoding) if defined($encoding); + $header->header('Content-Disposition' => $disposition) if defined($disposition); # we need some data so Content-Length gets set correctly and # the proxy doesn't wait for more data - place a canary my $resp = HTTP::Response->new(200, "OK", $header, "error canary"); @@ -456,6 +458,7 @@ sub send_file_start { if ($download->{stream}) { my $header = HTTP::Headers->new(Content_Type => $mime); $header->header('Content-Encoding' => $encoding) if defined($encoding); + $header->header('Content-Disposition' => $disposition) if defined($disposition); my $resp = HTTP::Response->new(200, "OK", $header); $self->response($reqstate, $resp, undef, 1, 0, $fh); return; -- 2.39.2