Merge pull request #7165 from ipfs/fix/subdomain-dir-redirect

fix: subdomain redirect for dir CIDs
This commit is contained in:
Steven Allen 2020-04-15 15:36:29 -07:00 committed by GitHub
commit 6f4608b602
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 1 deletions

View File

@ -342,6 +342,16 @@ func (i *gatewayHandler) getOrHeadHandler(w http.ResponseWriter, r *http.Request
BackLink: backLink,
Hash: hash,
}
// See statusResponseWriter.WriteHeader
// and https://github.com/ipfs/go-ipfs/issues/7164
// Note: this needs to occur before listingTemplate.Execute otherwise we get
// superfluous response.WriteHeader call from prometheus/client_golang
if w.Header().Get("Location") != "" {
w.WriteHeader(http.StatusMovedPermanently)
return
}
err = listingTemplate.Execute(w, tplData)
if err != nil {
internalWebError(w, err)

View File

@ -145,7 +145,7 @@ test_localhost_gateway_response_should_contain \
# payload directly, but redirect to URL with proper origin isolation
test_localhost_gateway_response_should_contain \
"request for localhost/ipfs/{CIDv1} returns status code HTTP 301" \
"request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently" \
"http://localhost:$GWAY_PORT/ipfs/$CIDv1" \
"301 Moved Permanently"
@ -154,6 +154,16 @@ test_localhost_gateway_response_should_contain \
"http://localhost:$GWAY_PORT/ipfs/$CIDv1" \
"Location: http://$CIDv1.ipfs.localhost:$GWAY_PORT/"
test_localhost_gateway_response_should_contain \
"request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently" \
"http://localhost:$GWAY_PORT/ipfs/$DIR_CID" \
"301 Moved Permanently"
test_localhost_gateway_response_should_contain \
"request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers" \
"http://localhost:$GWAY_PORT/ipfs/$DIR_CID/" \
"Location: http://$DIR_CID.ipfs.localhost:$GWAY_PORT/"
# Responses to the root domain of subdomain gateway hostname should Clear-Site-Data
# https://github.com/ipfs/go-ipfs/issues/6975#issuecomment-597472477
test_localhost_gateway_response_should_contain \