Description
- Gitea version (or commit ref): 6064bfa
- Can you reproduce the bug at https://try.gitea.io:
- Yes (provide example URL)
- No
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/data/testgitea(master*) # curl --head https://try.gitea.io/anyuser/anyrepo/raw/branch/master/anyfile.png
HTTP/2 405
date: Sat, 30 Jan 2021 23:04:16 GMT
set-cookie: i_like_gitea=10985d2770de63e2; Path=/; HttpOnly
set-cookie: _csrf=kFz_ot6_LVT-Jsf6zgWksSWXVLU6MTYxMjA0Nzg1NjQ0NDU5MjM5MA; Path=/; Expires=Sun, 31 Jan 2021 23:04:16 GMT; HttpOnly
set-cookie: macaron_flash=; Path=/; Max-Age=0; HttpOnly
x-frame-options: SAMEORIGIN
Description
When I was trying to fix issue #8030 I had a look at the code base. Then two days later it moved from Macaron to Chi, the HEAD HTTP method no longer works automatically when GET is defined.
I already added and tested the code locally. Adding this line to WebRoutes function in 'routers/routes/web.go' fixes the issue.
r.Use(middleware.GetHead)
As for fixing issue #8030 :
This is a problem when trying to make a program download from Gitea. For example, Windows executables break when trying to download from Gitea /raw route as it does not give "Content-Length" in HEAD response.
The only function that needed to change is ServeData in 'routers/repo/download.go'. By changing the call to io.Copy to ioutil.ReadAll() + ctx.Resp.Write() . Then Writing the Content-Length explicitly by taking the length of the ioutil.ReadAll() byte array.
Questions :
1- Are the design decisions good ? should I make a PR ?
2- Should I make one or two PRs ?
3- I have no idea how to write tests these two functionalities ?