HTTP response codes and response headers

1. HTTP response code

1. HTTP status return code 1xx (provisional response)
indicates a status code that indicates a provisional response and requires the requester to continue performing operations.

http status return code code description
100 (Continue) The requester should continue making the request. The server returns this code to indicate that it has received the first part of the request and is waiting for the remainder.
101 (Switch protocol) The requester has asked the server to switch protocols, and the server has confirmed and is ready to switch.

2. HTTP status return code 2xx (success)
indicates a status code that successfully processed the request.

http status return code code description
200 (success) The server has successfully processed the request. Typically, this means that the server served the requested web page.
201 (Created) The request was successful and the server created the new resource.
202 (Accepted) The server has accepted the request but has not yet processed it.
203 (Unauthorized Information) The server successfully processed the request, but the information returned may have come from another source.
204 (No Content) The server successfully processed the request but returned no content.
205 (Reset Content) The server successfully processed the request but returned no content.
206 (Partial Content) The server successfully processed part of the GET request.

3. HTTP status return code 3xx (redirect)
indicates that further operations are required to complete the request. Typically, these status codes are used for redirects.

http status return code code description
300 (multiple choices) In response to the request, the server can perform a variety of operations. The server can select an operation based on the requester (user agent), or provide a list of operations for the requester to choose from.
301 (Permanently Moved) The requested web page has been permanently moved to a new location. When the server returns this response (in response to a GET or HEAD request), it automatically forwards the requester to the new location.
302 (Temporary Move) The server is currently responding to requests from a web page in a different location, but the requester should continue to use the original location for future requests.
303 (View Other Locations) The server returns this code when the requester should use separate GET requests to different locations to retrieve the response.

304 (Not Modified) The requested web page has not been modified since the last request. When the server returns this response, no web page content is returned.
305 (Using Proxy) The requester can only access the requested web page using a proxy. If the server returns this response, it also indicates that the requester should use a proxy.
307 (Temporary Redirect) The server is currently responding to the request from a web page in a different location, but the requester should continue to use the original location for future requests.

4. HTTP status return code 4xx (request error)
These status codes indicate that the request may have gone wrong, preventing the server from processing it.

http status return code code description
400 (Bad Request) The server does not understand the syntax of the request.
A 401 (Unauthorized) request requires authentication. For web pages that require login, the server may return this response.
403 (Forbidden) The server refused the request.
404 (Not Found) The server cannot find the requested web page.
405 (Method Disabled) disables the method specified in the request.
406 (Not Accepted) The requested web page cannot be responded to with the requested content attributes.
407 (Proxy Authorization Required) This status code is similar to 401 (Not Authorized), but specifies that the requester should be authorized to use the proxy.
408 (Request Timeout) A timeout occurred while the server was waiting for a request.
409 (Conflict) The server encountered a conflict while completing the request. The server MUST include information about the conflict in the response.
410 (Deleted) The server returns this response if the requested resource has been permanently deleted.
411 (Valid length required) The server does not accept requests without a valid content-length header field.
412 (Precondition Not Met) The server did not meet one of the preconditions set by the requester in the request.
413 (Request Entity Too Large) The server cannot process the request because the request entity is too large and exceeds the server's processing capabilities.
414 (Requested URI too long) The requested URI (usually a URL) is too long and cannot be processed by the server.
415(Unsupported media type) The requested format is not supported by the requested page.
416 (Requested scope does not meet requirements) The server returns this status code if the page cannot provide the requested scope.
417 (Expectation Not Met) The server did not meet the requirements for the "Expected" request header field.

5. HTTP status return codes 5xx (server error)
These status codes indicate that an internal error occurred while the server was trying to process the request. These errors may be errors on the server itself rather than an error in the request.

http status return code code description
500 (Internal server error) The server encountered an error and was unable to complete the request.
501 (Not yet implemented) The server does not have the capabilities to complete the request. For example, this code may be returned when the server does not recognize the request method.
502 (Bad Gateway) The server, acting as a gateway or proxy, received an invalid response from an upstream server.
503 (Service Unavailable) The server is currently unavailable (due to overload or downtime for maintenance). Usually, this is a temporary state.
504 (Gateway Timeout) The server acted as a gateway or proxy, but did not receive the request from the upstream server in time.
505 (HTTP version not supported) The server does not support the HTTP protocol version used in the request.
511 (Authentication Required) The user needs to provide authentication to obtain network access.

2. HTTP response headers

  1. Allow , which request methods the server supports (such as GET, POST, etc.).

  2. Content-Encoding , the encoding (Encode) method of the document. Only after decoding can the content type specified by the Content-Type header be obtained. Using gzip to compress documents can significantly reduce the download time of HTML documents. Java's GZIPOutputStream can easily perform gzip compression, but only Netscape on Unix and IE 4 and IE 5 on Windows support it. Therefore, the Servlet should check whether the browser supports gzip by looking at the Accept-Encoding header (i.e. request.getHeader("Accept-Encoding")), and return a gzip-compressed HTML page for browsers that support gzip, and return a normal HTML page for other browsers. page.

  3. Content-Length , indicating the content length. This data is only required if the browser uses persistent HTTP connections. If you want to take advantage of persistent connections, you can write the output document to a ByteArrayOutputStream, check its size when finished, put that value into the Content-Length header, and finally send the content via byteArrayStream.writeTo(response.getOutputStream()).

  4. Content-Type , indicating what MIME type the following document belongs to. Servlet defaults to text/plain, but usually needs to be explicitly specified as text/html. Since Content-Type is often set, HttpServletResponse provides a dedicated method setContentType.

  5. Date , the current GMT time. You can use setDateHeader to set this header to avoid the trouble of converting the time format.

  6. Expires , at what point should a document be considered expired so that it is no longer cached?

  7. Last-Modified , the last modified time of the document. Clients can provide a date through the If-Modified-Since request header, and the request will be treated as a conditional GET. Only documents with modification time later than the specified time will be returned, otherwise a 304 (Not Modified) status will be returned. Last-Modified can also be set using the setDateHeader method.

  8. Location , indicating where the customer should go to retrieve the document. Location is usually not set directly, but through the sendRedirect method of HttpServletResponse, which also sets the status code to 302.

  9. Refresh , indicates the time after which the browser should refresh the document, in seconds. In addition to refreshing the current document, you can also let the browser read the specified page through setHeader("Refresh", "5; URL=http://host/path").
    Note that this function is usually implemented by setting <META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://host/path"> in the HEAD area of ​​the HTML page. This is because automatic refresh or redirection is It is important for HTML writers who cannot use CGI or Servlets. However, for Servlets, it is more convenient to set the Refresh header directly.

    Note that the meaning of Refresh is "refresh this page or access the specified page after N seconds", not "refresh this page or access the specified page every N seconds". Therefore, continuous refresh requires sending a Refresh header each time, and sending a 204 status code can prevent the browser from continuing to refresh, whether using the Refresh header or <META HTTP-EQUIV="Refresh"...>.

    Note that the Refresh header is not part of the official HTTP 1.1 specification, but is an extension, but both Netscape and IE support it.

  10. Server , server name. Servlets generally do not set this value, but are set by the web server itself.

  11. Set-Cookie , sets the cookie associated with the page. Servlets should not use response.setHeader("Set-Cookie", ...), but should use the dedicated method addCookie provided by HttpServletResponse. See discussion of cookie settings below.

  12. WWW-Authenticate , what type of authorization information should the client provide in the Authorization header? This header is required in responses containing a 401 (Unauthorized) status line. For example, response.setHeader("WWW-Authenticate", "BASIC realm=\"executives\"").
    Note that Servlets generally do not handle this aspect, but let the Web server's specialized mechanism control access to password-protected pages (such as .htaccess).

HTTP status code
HTTP response header information
HTTP content-type

Guess you like