From f9b011f2b01dfceca0d803a428c8c3376faedf54 Mon Sep 17 00:00:00 2001 From: Robert Rothenberg Date: Wed, 21 Dec 2022 16:55:05 +0000 Subject: [PATCH] Plack::Middleware::XSendfile ignore HEAD requests #688 --- lib/Plack/Middleware/XSendfile.pm | 1 + t/Plack-Middleware/xsendfile.t | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/lib/Plack/Middleware/XSendfile.pm b/lib/Plack/Middleware/XSendfile.pm index 7d851a32c..5a65675df 100644 --- a/lib/Plack/Middleware/XSendfile.pm +++ b/lib/Plack/Middleware/XSendfile.pm @@ -16,6 +16,7 @@ sub call { my $res = shift; my($status, $headers, $body) = @$res; return unless defined $body; + return if $env->{REQUEST_METHOD} eq 'HEAD'; if (Scalar::Util::blessed($body) && $body->can('path')) { my $type = $self->_variation($env) || ''; diff --git a/t/Plack-Middleware/xsendfile.t b/t/Plack-Middleware/xsendfile.t index f1a02fa79..cb1c1c928 100644 --- a/t/Plack-Middleware/xsendfile.t +++ b/t/Plack-Middleware/xsendfile.t @@ -28,6 +28,11 @@ test_psgi app => $handler, client => sub { is $res->content, ''; is $res->header('Content-Length'), 0, 'Content-Length 0'; } + + { + my $res = $cb->(HEAD "http://localhost/t/test.txt", 'X-Sendfile-Type' => 'X-Sendfile'); + ok !$res->header('X-Sendfile'), 'no pass through app header for HEAD requests'; + } }; test_psgi(