var respExcludeHeader … type Response … // Cookies parses and returns the cookies set in the Set-Cookie headers. func (r *Response) Cookies() []*Cookie { … } var ErrNoLocation … // Location returns the URL of the response's "Location" header, // if present. Relative redirects are resolved relative to // [Response.Request]. [ErrNoLocation] is returned if no // Location header is present. func (r *Response) Location() (*url.URL, error) { … } // ReadResponse reads and returns an HTTP response from r. // The req parameter optionally specifies the [Request] that corresponds // to this [Response]. If nil, a GET request is assumed. // Clients must call resp.Body.Close when finished reading resp.Body. // After that call, clients can inspect resp.Trailer to find key/value // pairs included in the response trailer. func ReadResponse(r *bufio.Reader, req *Request) (*Response, error) { … } // RFC 7234, section 5.4: Should treat // // Pragma: no-cache // // like // // Cache-Control: no-cache func fixPragmaCacheControl(header Header) { … } // ProtoAtLeast reports whether the HTTP protocol used // in the response is at least major.minor. func (r *Response) ProtoAtLeast(major, minor int) bool { … } // Write writes r to w in the HTTP/1.x server response format, // including the status line, headers, body, and optional trailer. // // This method consults the following fields of the response r: // // StatusCode // ProtoMajor // ProtoMinor // Request.Method // TransferEncoding // Trailer // Body // ContentLength // Header, values for non-canonical keys will have unpredictable behavior // // The Response Body is closed after it is sent. func (r *Response) Write(w io.Writer) error { … } func (r *Response) closeBody() { … } // bodyIsWritable reports whether the Body supports writing. The // Transport returns Writable bodies for 101 Switching Protocols // responses. // The Transport uses this method to determine whether a persistent // connection is done being managed from its perspective. Once we // return a writable response body to a user, the net/http package is // done managing that connection. func (r *Response) bodyIsWritable() bool { … } // isProtocolSwitch reports whether the response code and header // indicate a successful protocol upgrade response. func (r *Response) isProtocolSwitch() bool { … } // isProtocolSwitchResponse reports whether the response code and // response header indicate a successful protocol upgrade response. func isProtocolSwitchResponse(code int, h Header) bool { … } // isProtocolSwitchHeader reports whether the request or response header // is for a protocol switch. func isProtocolSwitchHeader(h Header) bool { … }