tailscale/tailscale · error
want GET to list targets
Error message
want GET to list targets
What it means
serveFileTargets is read-only and only supports GET. Any other method is rejected with 400 (not 405) by this handler.
Source
Thrown at feature/taildrop/localapi.go:484
}
rc, size, err := ext.OpenFile(name)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer rc.Close()
w.Header().Set("Content-Length", fmt.Sprint(size))
w.Header().Set("Content-Type", "application/octet-stream")
io.Copy(w, rc)
}
func serveFileTargets(h *localapi.Handler, w http.ResponseWriter, r *http.Request) {
if !h.PermitRead {
http.Error(w, "access denied", http.StatusForbidden)
return
}
if r.Method != "GET" {
http.Error(w, "want GET to list targets", http.StatusBadRequest)
return
}
ext, ok := ipnlocal.GetExt[*Extension](h.LocalBackend())
if !ok {
http.Error(w, "misconfigured taildrop extension", http.StatusInternalServerError)
return
}
fts, err := ext.FileTargets()
if err != nil {
localapi.WriteErrorJSON(w, err)
return
}
mak.NonNilSliceForJSON(&fts)
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(fts)
}View on GitHub (pinned to 6e0912f979)
Solutions
- Use HTTP GET to list taildrop targets.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at feature/taildrop/localapi.go:484 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tailscale/tailscale@6e0912f979 (2026-08-18).
Data as JSON: /api/errors/db90bddd82076232.
Report an issue: GitHub.