From 547bcff06444cc5a8cd0c0550c8fefee636b1edf Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Thu, 1 Feb 2024 09:18:44 +0530 Subject: [PATCH] Allow HEAD requests on public files (#26047) Fixes https://github.com/mattermost/mattermost/issues/25666 ```release-note NONE ``` --- server/channels/api4/file.go | 2 +- server/channels/api4/file_test.go | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/server/channels/api4/file.go b/server/channels/api4/file.go index 619cc40e93..4a1b651675 100644 --- a/server/channels/api4/file.go +++ b/server/channels/api4/file.go @@ -41,7 +41,7 @@ func (api *API) InitFile() { api.BaseRoutes.Team.Handle("/files/search", api.APISessionRequiredDisableWhenBusy(searchFiles)).Methods("POST") - api.BaseRoutes.PublicFile.Handle("", api.APIHandler(getPublicFile)).Methods("GET") + api.BaseRoutes.PublicFile.Handle("", api.APIHandler(getPublicFile)).Methods("GET", "HEAD") } func parseMultipartRequestHeader(req *http.Request) (boundary string, err error) { diff --git a/server/channels/api4/file_test.go b/server/channels/api4/file_test.go index daf6648c80..65d919a3ff 100644 --- a/server/channels/api4/file_test.go +++ b/server/channels/api4/file_test.go @@ -1086,6 +1086,10 @@ func TestGetPublicFile(t *testing.T) { require.NoError(t, err) require.Equal(t, http.StatusOK, resp.StatusCode, "failed to get image with public link") + resp, err = http.Head(link) + require.NoError(t, err) + require.Equal(t, http.StatusOK, resp.StatusCode, "failed to respond to HEAD request") + resp, err = http.Get(link[:strings.LastIndex(link, "?")]) require.NoError(t, err) require.Equal(t, http.StatusBadRequest, resp.StatusCode, "should've failed to get image with public link without hash", resp.Status)