diff options
author | 2023-07-13 21:27:25 +0200 | |
---|---|---|
committer | 2023-07-13 21:27:25 +0200 | |
commit | 12b6cdcd8ce52269be5a1ca8acaae006896808b5 (patch) | |
tree | eba84aa522ba2ccbfb539930789a046630d03dae /internal/api/activitypub.go | |
parent | [chore] Skip webfinger test on CI (#1983) (diff) | |
download | gotosocial-12b6cdcd8ce52269be5a1ca8acaae006896808b5.tar.xz |
[bugfix] Set Vary header correctly on cache-control (#1988)v0.10.0-rc2
* [bugfix] Set Vary header correctly on cache-control
* Prefer activitypub types on AP endpoints
* use immutable on file server, vary by range
* vary auth on Accept
Diffstat (limited to 'internal/api/activitypub.go')
-rw-r--r-- | internal/api/activitypub.go | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/internal/api/activitypub.go b/internal/api/activitypub.go index ec5effe55..02ae0767c 100644 --- a/internal/api/activitypub.go +++ b/internal/api/activitypub.go @@ -41,11 +41,13 @@ func (a *ActivityPub) Route(r router.Router, m ...gin.HandlerFunc) { usersGroup := r.AttachGroup("users") // attach shared, non-global middlewares to both of these groups - cacheControlMiddleware := middleware.CacheControl("no-store") + ccMiddleware := middleware.CacheControl(middleware.CacheControlConfig{ + Directives: []string{"no-store"}, + }) emojiGroup.Use(m...) usersGroup.Use(m...) - emojiGroup.Use(a.signatureCheckMiddleware, cacheControlMiddleware) - usersGroup.Use(a.signatureCheckMiddleware, cacheControlMiddleware) + emojiGroup.Use(a.signatureCheckMiddleware, ccMiddleware) + usersGroup.Use(a.signatureCheckMiddleware, ccMiddleware) a.emoji.Route(emojiGroup.Handle) a.users.Route(usersGroup.Handle) @@ -53,8 +55,17 @@ func (a *ActivityPub) Route(r router.Router, m ...gin.HandlerFunc) { // Public key endpoint requires different middleware + cache policies from other AP endpoints. func (a *ActivityPub) RoutePublicKey(r router.Router, m ...gin.HandlerFunc) { + // Create grouping for the 'users/[username]/main-key' prefix. publicKeyGroup := r.AttachGroup(publickey.PublicKeyPath) - publicKeyGroup.Use(a.signatureCheckMiddleware, middleware.CacheControl("public,max-age=604800")) + + // Attach middleware allowing public cacheing of main-key. + ccMiddleware := middleware.CacheControl(middleware.CacheControlConfig{ + Directives: []string{"public", "max-age=604800"}, + Vary: []string{"Accept", "Accept-Encoding"}, + }) + publicKeyGroup.Use(m...) + publicKeyGroup.Use(a.signatureCheckMiddleware, ccMiddleware) + a.publicKey.Route(publicKeyGroup.Handle) } |