handle Last-Modified and Etag

This commit is contained in:
Ronmi Ren 2025-01-07 21:41:48 +08:00
commit af903b8fee

View file

@ -54,6 +54,16 @@ func (f *Forgejo) handle(w http.ResponseWriter, r *http.Request) {
trySet(w.Header(), "Etag", info.ETag)
trySet(w.Header(), "Last-Modified", info.LastModified)
trySet(w.Header(), "Content-Length", info.Size)
if r.Header.Get("If-None-Match") == info.ETag {
w.WriteHeader(http.StatusNotModified)
return
}
if r.Header.Get("If-Modified-Since") == info.LastModified {
w.WriteHeader(http.StatusNotModified)
return
}
w.WriteHeader(http.StatusOK)
io.Copy(w, content)
}