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)