code: func NewRequestKey(r *http.Request) Key {
  	URL := r.URL
  
  	if location := r.Header.Get("Content-Location"); location != "" {
  		u, err := url.Parse(location)
  		if err == nil {
  			if !u.IsAbs() {
  				u = r.URL.ResolveReference(u)
  			}
  			if u.Host != r.Host {
  				debugf("illegal host %q in Content-Location", u.Host)
  			} else {
  				debugf("using Content-Location: %q", u.String())
  				URL = u
  			}
  		} else {
  			debugf("failed to parse Content-Location %q", location)
  		}
  	}
  
  	return NewKey(r.Method, URL, r.Header)
  }
docs: // NewRequestKey generates a Key for a request