mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-30 01:52:26 +08:00
gateway: fix erroneous Cache-Control: immutable on dir listings
License: MIT Signed-off-by: Lars Gierth <larsg@systemli.org>
This commit is contained in:
@ -202,7 +202,7 @@ func (i *gatewayHandler) getOrHeadHandler(ctx context.Context, w http.ResponseWr
|
|||||||
// and only if it's /ipfs!
|
// and only if it's /ipfs!
|
||||||
// TODO: break this out when we split /ipfs /ipns routes.
|
// TODO: break this out when we split /ipfs /ipns routes.
|
||||||
modtime := time.Now()
|
modtime := time.Now()
|
||||||
if strings.HasPrefix(urlPath, ipfsPathPrefix) {
|
if strings.HasPrefix(urlPath, ipfsPathPrefix) && !dir {
|
||||||
w.Header().Set("Etag", etag)
|
w.Header().Set("Etag", etag)
|
||||||
w.Header().Set("Cache-Control", "public, max-age=29030400, immutable")
|
w.Header().Set("Cache-Control", "public, max-age=29030400, immutable")
|
||||||
|
|
||||||
|
@ -23,6 +23,9 @@ import (
|
|||||||
id "gx/ipfs/QmeWJwi61vii5g8zQUB9UGegfUbmhTKHgeDFP9XuSp5jZ4/go-libp2p/p2p/protocol/identify"
|
id "gx/ipfs/QmeWJwi61vii5g8zQUB9UGegfUbmhTKHgeDFP9XuSp5jZ4/go-libp2p/p2p/protocol/identify"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// `ipfs object new unixfs-dir`
|
||||||
|
var emptyDir = "/ipfs/QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn"
|
||||||
|
|
||||||
type mockNamesys map[string]path.Path
|
type mockNamesys map[string]path.Path
|
||||||
|
|
||||||
func (m mockNamesys) Resolve(ctx context.Context, name string) (value path.Path, err error) {
|
func (m mockNamesys) Resolve(ctx context.Context, name string) (value path.Path, err error) {
|
||||||
@ -461,6 +464,32 @@ func TestIPNSHostnameBacklinks(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCacheControlImmutable(t *testing.T) {
|
||||||
|
ts, _ := newTestServerAndNode(t, nil)
|
||||||
|
t.Logf("test server url: %s", ts.URL)
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
|
req, err := http.NewRequest("GET", ts.URL+emptyDir+"/", nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
res, err := doWithoutRedirect(req)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// check the immutable tag isn't set
|
||||||
|
hdrs, ok := res.Header["Cache-Control"]
|
||||||
|
if ok {
|
||||||
|
for _, hdr := range hdrs {
|
||||||
|
if strings.Contains(hdr, "immutable") {
|
||||||
|
t.Fatalf("unexpected Cache-Control: immutable on directory listing: %s", hdr)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestVersion(t *testing.T) {
|
func TestVersion(t *testing.T) {
|
||||||
config.CurrentCommit = "theshortcommithash"
|
config.CurrentCommit = "theshortcommithash"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user