Skip to content

Commit 1f5011d

Browse files
authored
Restore CORS on git smart http protocol (#16496) (#16506)
Backport #16496 Unfortunately the chi changes have resulted in the CORS headers for the git smart http protocol going missing. This is mostly because the OPTIONS method is not being handled by httpBase anymore. This PR adds a GetOptions, PostOptions and Options methods to web handler to allow OPTIONS method requests to still reach the httpBase function. Fix #16350 Close #16491 Signed-off-by: Andrew Thornton <[email protected]>
1 parent cf9aeca commit 1f5011d

File tree

2 files changed

+31
-11
lines changed

2 files changed

+31
-11
lines changed

modules/web/route.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,26 @@ func (r *Route) Get(pattern string, h ...interface{}) {
269269
r.R.Get(r.getPattern(pattern), Wrap(middlewares...))
270270
}
271271

272+
// Options delegate options method
273+
func (r *Route) Options(pattern string, h ...interface{}) {
274+
var middlewares = r.getMiddlewares(h)
275+
r.R.Options(r.getPattern(pattern), Wrap(middlewares...))
276+
}
277+
278+
// GetOptions delegate get and options method
279+
func (r *Route) GetOptions(pattern string, h ...interface{}) {
280+
var middlewares = r.getMiddlewares(h)
281+
r.R.Get(r.getPattern(pattern), Wrap(middlewares...))
282+
r.R.Options(r.getPattern(pattern), Wrap(middlewares...))
283+
}
284+
285+
// PostOptions delegate post and options method
286+
func (r *Route) PostOptions(pattern string, h ...interface{}) {
287+
var middlewares = r.getMiddlewares(h)
288+
r.R.Post(r.getPattern(pattern), Wrap(middlewares...))
289+
r.R.Options(r.getPattern(pattern), Wrap(middlewares...))
290+
}
291+
272292
// Head delegate head method
273293
func (r *Route) Head(pattern string, h ...interface{}) {
274294
var middlewares = r.getMiddlewares(h)

routers/web/web.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,17 +1006,17 @@ func RegisterRoutes(m *web.Route) {
10061006
}, ignSignInAndCsrf, lfsServerEnabled)
10071007

10081008
m.Group("", func() {
1009-
m.Post("/git-upload-pack", repo.ServiceUploadPack)
1010-
m.Post("/git-receive-pack", repo.ServiceReceivePack)
1011-
m.Get("/info/refs", repo.GetInfoRefs)
1012-
m.Get("/HEAD", repo.GetTextFile("HEAD"))
1013-
m.Get("/objects/info/alternates", repo.GetTextFile("objects/info/alternates"))
1014-
m.Get("/objects/info/http-alternates", repo.GetTextFile("objects/info/http-alternates"))
1015-
m.Get("/objects/info/packs", repo.GetInfoPacks)
1016-
m.Get("/objects/info/{file:[^/]*}", repo.GetTextFile(""))
1017-
m.Get("/objects/{head:[0-9a-f]{2}}/{hash:[0-9a-f]{38}}", repo.GetLooseObject)
1018-
m.Get("/objects/pack/pack-{file:[0-9a-f]{40}}.pack", repo.GetPackFile)
1019-
m.Get("/objects/pack/pack-{file:[0-9a-f]{40}}.idx", repo.GetIdxFile)
1009+
m.PostOptions("/git-upload-pack", repo.ServiceUploadPack)
1010+
m.PostOptions("/git-receive-pack", repo.ServiceReceivePack)
1011+
m.GetOptions("/info/refs", repo.GetInfoRefs)
1012+
m.GetOptions("/HEAD", repo.GetTextFile("HEAD"))
1013+
m.GetOptions("/objects/info/alternates", repo.GetTextFile("objects/info/alternates"))
1014+
m.GetOptions("/objects/info/http-alternates", repo.GetTextFile("objects/info/http-alternates"))
1015+
m.GetOptions("/objects/info/packs", repo.GetInfoPacks)
1016+
m.GetOptions("/objects/info/{file:[^/]*}", repo.GetTextFile(""))
1017+
m.GetOptions("/objects/{head:[0-9a-f]{2}}/{hash:[0-9a-f]{38}}", repo.GetLooseObject)
1018+
m.GetOptions("/objects/pack/pack-{file:[0-9a-f]{40}}.pack", repo.GetPackFile)
1019+
m.GetOptions("/objects/pack/pack-{file:[0-9a-f]{40}}.idx", repo.GetIdxFile)
10201020
}, ignSignInAndCsrf)
10211021

10221022
m.Head("/tasks/trigger", repo.TriggerTask)

0 commit comments

Comments
 (0)