티스토리 수익 글 보기
-
. Introduction -
. Purpose -
. History and Evolution -
. Core Semantics -
. Specifications Obsoleted by This Document
-
-
. Conformance -
. Syntax Notation -
. Requirements Notation -
. Length Requirements -
. Error Handling -
. Protocol Version
-
-
. Terminology and Core Concepts -
. Resources -
. Representations -
. Connections, Clients, and Servers -
. Messages -
. User Agents -
. Origin Server -
. Intermediaries -
. Caches -
. Example Message Exchange
-
-
. Identifiers in HTTP -
. URI References -
. HTTP-Related URI Schemes -
. http URI Scheme -
. https URI Scheme -
. http(s) Normalization and Comparison -
. Deprecation of userinfo in http(s) URIs -
. http(s) References with Fragment Identifiers
-
-
. Authoritative Access -
. URI Origin -
. http Origins -
. https Origins -
. https Certificate Verification -
. IP-ID Reference Identity
-
-
-
. Fields -
. Field Names -
. Field Lines and Combined Field Value -
. Field Order -
. Field Limits -
. Field Values -
. Common Rules for Defining Field Values -
. Lists (#rule ABNF Extension) -
. Sender Requirements -
. Recipient Requirements
-
-
. Tokens -
. Whitespace -
. Quoted Strings -
. Comments -
. Parameters -
. Date/Time Formats
-
-
-
. Message Abstraction -
. Framing and Completeness -
. Control Data -
. Header Fields -
. Content -
. Content Semantics -
. Identifying Content
-
-
. Trailer Fields -
. Limitations on Use of Trailers -
. Processing Trailer Fields
-
-
. Message Metadata -
. Date -
. Trailer
-
-
-
. Routing HTTP Messages -
. Determining the Target Resource -
. Host and :authority -
. Routing Inbound Requests -
. To a Cache -
. To a Proxy -
. To the Origin
-
-
. Rejecting Misdirected Requests -
. Response Correlation -
. Message Forwarding -
. Connection -
. Max-Forwards -
. Via
-
-
. Message Transformations -
. Upgrade
-
-
. Representation Data and Metadata -
. Representation Data -
. Representation Metadata -
. Content-Type -
. Media Type -
. Charset -
. Multipart Types
-
-
. Content-Encoding -
. Content Codings -
. Compress Coding -
. Deflate Coding -
. Gzip Coding
-
-
-
. Content-Language -
. Language Tags
-
-
. Content-Length -
. Content-Location -
. Validator Fields -
. Weak versus Strong -
. Last-Modified -
. Generation -
. Comparison
-
-
. ETag -
. Generation -
. Comparison -
. Example: Entity Tags Varying on Content-Negotiated Resources
-
-
-
-
. Methods -
. Overview -
. Common Method Properties -
. Safe Methods -
. Idempotent Methods -
. Methods and Caching
-
-
. Method Definitions -
. GET -
. HEAD -
. POST -
. PUT -
. DELETE -
. CONNECT -
. OPTIONS -
. TRACE
-
-
-
. Message Context -
. Request Context Fields -
. Expect -
. From -
. Referer -
. TE -
. User-Agent
-
-
. Response Context Fields -
. Allow -
. Location -
. Retry-After -
. Server
-
-
-
. HTTP Authentication -
. Authentication Scheme -
. Authentication Parameters -
. Challenge and Response -
. Credentials -
. Establishing a Protection Space (Realm) -
. Authenticating Users to Origin Servers -
. WWW-Authenticate -
. Authorization -
. Authentication-Info
-
-
. Authenticating Clients to Proxies -
. Proxy-Authenticate -
. Proxy-Authorization -
. Proxy-Authentication-Info
-
-
-
. Content Negotiation -
. Proactive Negotiation -
. Reactive Negotiation -
. Request Content Negotiation -
. Content Negotiation Field Features -
. Absence -
. Quality Values -
. Wildcard Values
-
-
. Content Negotiation Fields -
. Accept -
. Accept-Charset -
. Accept-Encoding -
. Accept-Language -
. Vary
-
-
-
. Conditional Requests -
. Preconditions -
. If-Match -
. If-None-Match -
. If-Modified-Since -
. If-Unmodified-Since -
. If-Range
-
-
. Evaluation of Preconditions -
. When to Evaluate -
. Precedence of Preconditions
-
-
-
. Range Requests -
. Range Units -
. Range Specifiers -
. Byte Ranges
-
-
. Range -
. Accept-Ranges -
. Content-Range -
. Partial PUT -
. Media Type multipart/byteranges
-
-
. Status Codes -
. Overview of Status Codes -
. Informational 1xx -
. 100 Continue -
. 101 Switching Protocols
-
-
. Successful 2xx -
. 200 OK -
. 201 Created -
. 202 Accepted -
. 203 Non-Authoritative Information -
. 204 No Content -
. 205 Reset Content -
. 206 Partial Content -
. Single Part -
. Multiple Parts -
. Combining Parts
-
-
-
. Redirection 3xx -
. 300 Multiple Choices -
. 301 Moved Permanently -
. 302 Found -
. 303 See Other -
. 304 Not Modified -
. 305 Use Proxy -
. 306 (Unused) -
. 307 Temporary Redirect -
. 308 Permanent Redirect
-
-
. Client Error 4xx -
. 400 Bad Request -
. 401 Unauthorized -
. 402 Payment Required -
. 403 Forbidden -
. 404 Not Found -
. 405 Method Not Allowed -
. 406 Not Acceptable -
. 407 Proxy Authentication Required -
. 408 Request Timeout -
. 409 Conflict -
. 410 Gone -
. 411 Length Required -
. 412 Precondition Failed -
. 413 Content Too Large -
. 414 URI Too Long -
. 415 Unsupported Media Type -
. 416 Range Not Satisfiable -
. 417 Expectation Failed -
. 418 (Unused) -
. 421 Misdirected Request -
. 422 Unprocessable Content -
. 426 Upgrade Required
-
-
. Server Error 5xx -
. 500 Internal Server Error -
. 501 Not Implemented -
. 502 Bad Gateway -
. 503 Service Unavailable -
. 504 Gateway Timeout -
. 505 HTTP Version Not Supported
-
-
-
. Extending HTTP -
. Method Extensibility -
. Method Registry -
. Considerations for New Methods
-
-
. Status Code Extensibility -
. Status Code Registry -
. Considerations for New Status Codes
-
-
. Field Extensibility -
. Field Name Registry -
. Considerations for New Fields -
. Considerations for New Field Names -
. Considerations for New Field Values
-
-
-
. Authentication Scheme Extensibility -
. Authentication Scheme Registry -
. Considerations for New Authentication Schemes
-
-
. Range Unit Extensibility -
. Range Unit Registry -
. Considerations for New Range Units
-
-
. Content Coding Extensibility -
. Content Coding Registry -
. Considerations for New Content Codings
-
-
. Upgrade Token Registry
-
-
. Security Considerations -
. Establishing Authority -
. Risks of Intermediaries -
. Attacks Based on File and Path Names -
. Attacks Based on Command, Code, or Query Injection -
. Attacks via Protocol Element Length -
. Attacks Using Shared-Dictionary Compression -
. Disclosure of Personal Information -
. Privacy of Server Log Information -
. Disclosure of Sensitive Information in URIs -
. Application Handling of Field Names -
. Disclosure of Fragment after Redirects -
. Disclosure of Product Information -
. Browser Fingerprinting -
. Validator Retention -
. Denial-of-Service Attacks Using Range -
. Authentication Considerations -
. Confidentiality of Credentials -
. Credentials and Idle Clients -
. Protection Spaces -
. Additional Response Fields
-
-
-
. IANA Considerations -
. URI Scheme Registration -
. Method Registration -
. Status Code Registration -
. Field Name Registration -
. Authentication Scheme Registration -
. Content Coding Registration -
. Range Unit Registration -
. Media Type Registration -
. Port Registration -
. Upgrade Token Registration
-
-
. References -
. Normative References -
. Informative References
-
-
. Collected ABNF -
. Changes from Previous RFCs -
. Changes from RFC 2818 -
. Changes from RFC 7230 -
. Changes from RFC 7231 -
. Changes from RFC 7232 -
. Changes from RFC 7233 -
. Changes from RFC 7235 -
. Changes from RFC 7538 -
. Changes from RFC 7615 -
. Changes from RFC 7694
-
-
Acknowledgements -
Index -
Authors’ Addresses
| Title | Reference | See |
|---|---|---|
| HTTP Over TLS |
|
|
| HTTP/1.1 Message Syntax and Routing [*] |
|
|
| HTTP/1.1 Semantics and Content |
|
|
| HTTP/1.1 Conditional Requests |
|
|
| HTTP/1.1 Range Requests |
|
|
| HTTP/1.1 Authentication |
|
|
| HTTP Status Code 308 (Permanent Redirect) |
|
|
| HTTP Authentication-Info and Proxy-Authentication-Info Response Header Fields |
|
|
| HTTP Client-Initiated Content-Encoding |
|
|
| URI Scheme | Description | Section |
|---|---|---|
| http | Hypertext Transfer Protocol |
|
| https | Hypertext Transfer Protocol Secure |
|
- If the port is equal to the default port for a scheme, the normal form is to omit the port subcomponent.
- When not being used as the target of an OPTIONS request, an empty path component is equivalent to an absolute path of “/”, so the normal form is to provide a path of “/” instead.
- The scheme and host are case-insensitive and normally provided in lowercase; all other components are compared in a case-sensitive manner.
- Characters other than those in the “reserved” set are equivalent to
their percent-encoded octets: the normal form is to not encode them (see
Sections
and of ).
- control data to describe and route the message,
- a headers lookup table of name/value pairs for extending that control data and conveying additional information about the sender, message, content, or context,
- a potentially unbounded stream of content, and
- a trailers lookup table of name/value pairs for communicating information obtained while sending the content.
- If the request has a
Content-Location header field, then the sender asserts that the content is a representation of the resource identified by the Content-Location field value. However, such an assertion cannot be trusted unless it can be verified by other means (not defined by this specification). The information might still be useful for revision history links. - Otherwise, the content is unidentified by HTTP, but a more specific identifier might be supplied within the content itself.
- If the request method is HEAD or the response status code is
204 (No Content) or304 (Not Modified) , there is no content in the response. - If the request method is GET and the response status code is
200 (OK) , the content is a representation of thetarget resource (). - If the request method is GET and the response status code is
203 (Non-Authoritative Information) , the content is a potentially modified or enhanced representation of thetarget resource as provided by an intermediary. - If the request method is GET and the response status code is
206 (Partial Content) , the content is one or more parts of a representation of the target resource. - If the response has a
Content-Location header field and its field value is a reference to the same URI as the target URI, the content is a representation of the target resource. - If the response has a
Content-Location header field and its field value is a reference to a URI different from the target URI, then the sender asserts that the content is a representation of the resource identified by the Content-Location field value. However, such an assertion cannot be trusted unless it can be verified by other means (not defined by this specification). - Otherwise, the content is unidentified by HTTP, but a more specific identifier might be supplied within the content itself.
-
For CONNECT (
), the request target is the host name and port number of the tunnel destination, separated by a colon. -
For OPTIONS (
), the request target can be a single asterisk (“*”).
- Proxy-Connection (
) - Keep-Alive (
) - TE (
) - Transfer-Encoding (
) - Upgrade (
)
- For a response to a GET or HEAD request, this is an indication that the
target URI refers to a resource that is subject to content
negotiation and the Content-Location field value is a more specific
identifier for the
selected representation . - For a
201 (Created) response to a state-changing method, a Content-Location field value that is identical to theLocation field value indicates that this content is a current representation of the newly created resource. - Otherwise, such a Content-Location indicates that this content is a
representation reporting on the requested action’s status and that the
same report is available (for future access with GET) at the given URI.
For example, a purchase transaction made via a POST request might
include a receipt document as the content of the
200 (OK) response; the Content-Location field value provides an identifier for retrieving a copy of that same receipt in the future.
- The validator is being compared by an origin server to the actual current validator for the representation and,
- That origin server reliably knows that the associated representation did not change twice during the second covered by the presented validator;
- The validator is about to be used by a client in an
If-Modified-Since ,If-Unmodified-Since , orIf-Range header field, because the client has a cache entry for the associated representation, and - That cache entry includes a
Date value which is at least one second after the Last-Modified value and the client has reason to believe that they were generated by the same clock or that there is enough difference between the Last-Modified and Date values to make clock synchronization issues unlikely;
- The validator is being compared by an intermediate cache to the validator stored in its cache entry for the representation, and
- That cache entry includes a
Date value which is at least one second after the Last-Modified value and the cache has reason to believe that they were generated by the same clock or that there is enough difference between the Last-Modified and Date values to make clock synchronization issues unlikely.
- “Strong comparison”:
- two entity tags are equivalent if both are not weak and their opaque-tags match character-by-character.
- “Weak comparison”:
- two entity tags are equivalent if their opaque-tags match character-by-character, regardless of either or both being tagged as “weak”.
| ETag 1 | ETag 2 | Strong Comparison | Weak Comparison |
|---|---|---|---|
| W/”1″ | W/”1″ | no match | match |
| W/”1″ | W/”2″ | no match | no match |
| W/”1″ | “1” | no match | match |
| “1” | “1” | match | match |
| Method Name | Description | Section |
|---|---|---|
| GET | Transfer a current representation of the target resource. |
|
| HEAD | Same as GET, but do not transfer the response content. |
|
| POST | Perform resource-specific processing on the request content. |
|
| PUT | Replace all current representations of the target resource with the request content. |
|
| DELETE | Remove all current representations of the target resource. |
|
| CONNECT | Establish a tunnel to the server identified by the target resource. |
|
| OPTIONS | Describe the communication options for the target resource. |
|
| TRACE | Perform a message loop-back test along the path to the target resource. |
|
- Providing a block of data, such as the fields entered into an HTML form, to a data-handling process;
- Posting a message to a bulletin board, newsgroup, mailing list, blog, or similar group of articles;
- Creating a new resource that has yet to be identified by the origin server; and
- Appending data to a resource’s existing representation(s).
- reconfigure the target resource to reflect the new media type;
- transform the PUT representation to a format consistent with that of the resource before saving it as the new resource state; or,
- reject the request with a
415 (Unsupported Media Type) response indicating that the target resource is limited to “text/html”, perhaps including a link to a different resource that would be a suitable target for the new representation.
- a
202 (Accepted) status code if the action will likely succeed but has not yet been enacted, - a
204 (No Content) status code if the action has been enacted and no further information is to be supplied, or - a
200 (OK) status code if the action has been enacted and the response message includes a representation describing the status.
-
A client
MUST NOT generate a 100-continue expectation in a request that does not include content. -
A client that will wait for a
100 (Continue) response before sending the request contentMUST send anExpect header field containing a 100-continue expectation. -
A client that sends a 100-continue expectation is not required to wait
for any specific length of time; such a client
MAY proceed to send the content even if it has not yet received a response. Furthermore, since100 (Continue) responses cannot be sent through an HTTP/1.0 intermediary, such a clientSHOULD NOT wait for an indefinite period before sending the content. -
A client that receives a
417 (Expectation Failed) status code in response to a request containing a 100-continue expectationSHOULD repeat that request without a 100-continue expectation, since the 417 response merely indicates that the response chain does not support expectations (e.g., it passes through an HTTP/1.0 server).
-
A server that receives a 100-continue expectation in an HTTP/1.0 request
MUST ignore that expectation. -
A server
MAY omit sending a100 (Continue) response if it has already received some or all of the content for the corresponding request, or if the framing indicates that there is no content. -
A server that sends a
100 (Continue) responseMUST ultimately send a final status code, once it receives and processes the request content, unless the connection is closed prematurely. -
A server that responds with a final status code before reading the
entire request content
SHOULD indicate whether it intends to close the connection (e.g., see) or continue reading the request content.
- an immediate response with a final status code, if that status can be determined by examining just the method, target URI, and header fields, or
- an immediate
100 (Continue) response to encourage the client to send the request content.
- send an immediate response with a final status code, if that status can be determined by examining just the method, target URI, and header fields, or
- forward the request toward the origin server by sending a corresponding request-line and header section to the next inbound server.
- It is impossible for the server to accurately determine what might be “best” for any given user, since that would require complete knowledge of both the capabilities of the user agent and the intended use for the response (e.g., does the user want to view it on screen or print it on paper?);
- Having the user agent describe its capabilities in every request can be both very inefficient (given that only a small percentage of responses have multiple representations) and a potential risk to the user’s privacy;
- It complicates the implementation of an origin server and the algorithms for generating responses to a request; and,
- It limits the reusability of responses for shared caching.
- text/plain;format=flowed
- text/plain
- text/*
- */*
| Media Type | Quality Value |
|---|---|
| text/plain;format=flowed | 1 |
| text/plain | 0.7 |
| text/html | 0.3 |
| image/jpeg | 0.5 |
| text/plain;format=fixed | 0.4 |
| text/html;level=3 | 0.7 |
- If no Accept-Encoding header field is in the request, any content coding is considered acceptable by the user agent.
- If the representation has no content coding, then it is acceptable by default unless specifically excluded by the Accept-Encoding header field stating either “identity;q=0” or “*;q=0” without a more specific entry for “identity”.
- If the representation’s content coding is one of the content codings
listed in the Accept-Encoding field value, then it is acceptable unless
it is accompanied by a qvalue of 0. (As defined in
, a qvalue of 0 means “not acceptable”.)
-
To inform cache recipients that they MUST NOT use this response to satisfy a later request unless the later request has the same values for the listed header fields as the original request () or reuse of the response has been validated by the origin server. In other words, Vary expands the cache key required to match a new request to the stored cache entry. -
To inform user agent recipients that this response was subject to content negotiation ( ) and a different representation might be sent in a subsequent request if other values are provided in the listed header fields ( proactive negotiation ).
- If the field value is “*”, the condition is true if the origin server has a current representation for the target resource.
- If the field value is a list of entity tags, the condition is true if any of the listed tags match the entity tag of the selected representation.
- Otherwise, the condition is false.
- If the field value is “*”, the condition is false if the origin server has a current representation for the target resource.
- If the field value is a list of entity tags, the condition is false if one of the listed tags matches the entity tag of the selected representation.
- Otherwise, the condition is true.
- If the selected representation’s last modification date is earlier or equal to the date provided in the field value, the condition is false.
- Otherwise, the condition is true.
- If the selected representation’s last modification date is earlier than or equal to the date provided in the field value, the condition is true.
- Otherwise, the condition is false.
- If the
HTTP-date validator provided is not a strong validator in the sense defined by, the condition is false. - If the
HTTP-date validator provided exactly matches theLast-Modified field value for the selected representation, the condition is true. - Otherwise, the condition is false.
- If the
entity-tag validator provided exactly matches theETag field value for the selected representation using the strong comparison function (), the condition is true. - Otherwise, the condition is false.
-
When recipient is the origin server and If-Match is present, evaluate theIf-Match precondition:- if true, continue to step
- if false, respond
412 (Precondition Failed) unless it can be determined that the state-changing request has already succeeded (see)
- if true, continue to step
-
When recipient is the origin server, If-Match is not present, andIf-Unmodified-Since is present, evaluate theIf-Unmodified-Since precondition:- if true, continue to step
- if false, respond
412 (Precondition Failed) unless it can be determined that the state-changing request has already succeeded (see)
- if true, continue to step
-
When If-None-Match is present, evaluate theIf-None-Match precondition:- if true, continue to step
- if false for GET/HEAD, respond
304 (Not Modified) - if false for other methods, respond
412 (Precondition Failed)
- if true, continue to step
-
When the method is GET or HEAD, If-None-Match is not present, andIf-Modified-Since is present, evaluate theIf-Modified-Since precondition:- if true, continue to step
- if false, respond
304 (Not Modified)
- if true, continue to step
-
When the method is GET and both Range andIf-Range are present, evaluate theIf-Range precondition:- if true and the
Range is applicable to theselected representation , respond206 (Partial Content) - otherwise, ignore the
Range header field and respond200 (OK)
- if true and the
-
Otherwise, - perform the requested method and respond according to its success or failure.
-
The first 500 bytes (byte offsets 0-499, inclusive): bytes=0-499 -
The second 500 bytes (byte offsets 500-999, inclusive): bytes=500-999
-
The final 500 bytes (byte offsets 9500-9999, inclusive): bytes=-500 Or: bytes=9500- -
The first and last bytes only (bytes 0 and 9999): bytes=0-0,-1 -
The first, middle, and last 1000 bytes: bytes= 0-999, 4500-5499, -1000 -
Other valid (but not canonical) specifications of the second 500 bytes (byte offsets 500-999, inclusive): bytes=500-600,601-999 bytes=500-700,601-999
- an
int-range with afirst-pos that is less than the current length of the selected representation or - a
suffix-range with a non-zerosuffix-length .
-
The first 500 bytes: Content-Range: bytes 0-499/1234 -
The second 500 bytes: Content-Range: bytes 500-999/1234 -
All except for the first 500 bytes: Content-Range: bytes 500-1233/1234 -
The last 500 bytes: Content-Range: bytes 734-1233/1234
- Additional CRLFs might precede the first boundary string in the body.
- Although
permits the boundary string to be quoted, some existing implementations handle a quoted boundary string incorrectly. - A number of clients and servers were coded to an early draft
of the byteranges specification that used a media type of
“multipart/x-byteranges”
, which is almost (but not quite) compatible with this type.
- Type name:
- multipart
- Subtype name:
- byteranges
- Required parameters:
- boundary
- Optional parameters:
- N/A
- Encoding considerations:
- only “7bit”, “8bit”, or “binary” are permitted
- Security considerations:
- see
- Interoperability considerations:
- N/A
- Published specification:
- RFC 9110 (see
) - Applications that use this media type:
- HTTP components supporting multiple ranges in a single request
- Fragment identifier considerations:
- N/A
- Additional information:
-
- Deprecated alias names for this type:
- N/A
- Magic number(s):
- N/A
- File extension(s):
- N/A
- Macintosh file type code(s):
- N/A
- Person and email address to contact for further information:
- See Authors’ Addresses section.
- Intended usage:
- COMMON
- Restrictions on usage:
- N/A
- Author:
- See Authors’ Addresses section.
- Change controller:
- IESG
-
1xx (Informational) : The request was received, continuing process -
2xx (Successful) : The request was successfully received, understood, and accepted -
3xx (Redirection) : Further action needs to be taken in order to complete the request -
4xx (Client Error) : The request contains bad syntax or cannot be fulfilled -
5xx (Server Error) : The server failed to fulfill an apparently valid request
| Request Method | Response content is a representation of: |
|---|---|
| GET | the |
| HEAD | the |
| POST | the status of, or results obtained from, the action |
| PUT, DELETE | the status of the action |
| OPTIONS | communication options for the target resource |
| TRACE | the request message as received by the server returning the trace |
-
Redirects that indicate this resource might be available at a
different URI, as provided by the
Location header field, as in the status codes301 (Moved Permanently) ,302 (Found) ,307 (Temporary Redirect) , and308 (Permanent Redirect) . -
Redirection that offers a choice among matching resources capable
of representing this resource, as in the
300 (Multiple Choices) status code. -
Redirection to a different resource, identified by the
Location header field, that can represent an indirect response to the request, as in the303 (See Other) status code. -
Redirection to a previously stored result, as in the
304 (Not Modified) status code.
-
Replace the target URI with the URI referenced by the redirection response’s Location header field value after resolving it relative to the original request’s target URI. -
Remove header fields that were automatically generated by the implementation, replacing them with updated values as appropriate to the new request. This includes: - Connection-specific header fields (see
), - Header fields specific to the client’s proxy configuration,
including (but not limited to)
Proxy-Authorization , - Origin-specific header fields (if any), including (but not
limited to)
Host , - Validating header fields that were added by the implementation’s
cache (e.g.,
If-None-Match ,If-Modified-Since ), and - Resource-specific header fields, including (but not limited to)
Referer , Origin,Authorization , and Cookie.
- Connection-specific header fields (see
-
Consider removing header fields that were not automatically generated by the implementation (i.e., those present in the request because they were added by the calling context) where there are security implications; this includes but is not limited to Authorization and Cookie. -
Change the request method according to the redirecting status code’s semantics, if applicable. -
If the request method has been changed to GET or HEAD, remove content-specific header fields, including (but not limited to) Content-Encoding ,Content-Language ,Content-Location ,Content-Type ,Content-Length , Digest,Last-Modified .
-
Content-Location ,Date ,ETag , andVary -
Cache-Control and Expires (see
)
- Method Name (see
) - Safe (“yes” or “no”, see
) - Idempotent (“yes” or “no”, see
) - Pointer to specification text
- Status Code (3 digits)
- Short Description
- Pointer to specification text
- Field name:
-
The requested field name. It
MUST conform to the field-name syntax defined in, and it SHOULD be restricted to just letters, digits, and hyphen (‘-‘) characters, with the first character being a letter. - Status:
- “permanent”, “provisional”, “deprecated”, or “obsoleted”.
- Specification document(s):
- Reference to the document that specifies the field, preferably including a URI that can be used to retrieve a copy of the document. Optional but encouraged for provisional registrations. An indication of the relevant section(s) can also be included, but is not required.
- Comments:
- Additional information, such as about reserved entries.
- Under what conditions the field can be used; e.g., only in responses or requests, in all messages, only on responses to a particular request method, etc.
- Whether the field semantics are further refined by their context, such as their use with certain request methods or status codes.
- The scope of applicability for the information conveyed. By default, fields apply only to the message they are associated with, but some response fields are designed to apply to all representations of a resource, the resource itself, or an even broader scope. Specifications that expand the scope of a response field will need to carefully consider issues such as content negotiation, the time period of applicability, and (in some cases) multi-tenant server deployments.
- Under what conditions intermediaries are allowed to insert, delete, or modify the field’s value.
- If the field is allowable in trailers; by
default, it will not be (see
). - Whether it is appropriate or even required to list the field name in the
Connection header field (i.e., if the field is to be hop-by-hop; see). - Whether the field introduces any additional security considerations, such as disclosure of privacy-related data.
- If it is appropriate to list the field name in a
Vary response header field (e.g., when the request header field is used by an origin server’s content selection algorithm; see). - If the field is intended to be stored when received in a PUT
request (see
). - If the field ought to be removed when automatically redirecting a
request due to security concerns (see
).
- Authentication Scheme Name
- Pointer to specification text
- Notes (optional)
-
HTTP authentication is presumed to be stateless: all of the information necessary to authenticate a request MUST be provided in the request, rather than be dependent on the server remembering prior requests. Authentication based on, or bound to, the underlying connection is outside the scope of this specification and inherently flawed unless steps are taken to ensure that the connection cannot be used by any party other than the authenticated user (see). -
The authentication parameter “realm” is reserved for defining protection spaces as described in . New schemes MUST NOT use it in a way incompatible with that definition. -
The “token68” notation was introduced for compatibility with existing authentication schemes and can only be used once per challenge or credential. Thus, new schemes ought to use the auth-param syntax instead, because otherwise future extensions will be impossible. -
The parsing of challenges and credentials is defined by this specification and cannot be modified by new authentication schemes. When the auth-param syntax is used, all parameters ought to support both token and quoted-string syntax, and syntactical constraints ought to be defined on the field value after parsing (i.e., quoted-string processing). This is necessary so that recipients can use a generic parser that applies to all authentication schemes. Note: The fact that the value syntax for the “realm” parameter is restricted to quoted-string was a bad design choice not to be repeated for new parameters. -
Definitions of new schemes ought to define the treatment of unknown extension parameters. In general, a “must-ignore” rule is preferable to a “must-understand” rule, because otherwise it will be hard to introduce new parameters in the presence of legacy recipients. Furthermore, it’s good to describe the policy for defining new parameters (such as “update the specification” or “use this registry”). -
Authentication schemes need to document whether they are usable in origin-server authentication (i.e., using WWW-Authenticate ), and/or proxy authentication (i.e., usingProxy-Authenticate ). -
The credentials carried in an Authorization header field are specific to the user agent and, therefore, have the same effect on HTTP caches as the “private” cache response directive (), within the scope of the request in which they appear. Therefore, new authentication schemes that choose not to carry credentials in the Authorization header field (e.g., using a newly defined header field) will need to explicitly disallow caching, by mandating the use of cache response directives (e.g., “private”). -
Schemes using Authentication-Info ,Proxy-Authentication-Info , or any other authentication related response header field need to consider and document the related security considerations (see).
- Name
- Description
- Pointer to specification text
- Name
- Description
- Pointer to specification text
- A protocol-name token, once registered, stays registered forever.
- A protocol-name token is case-insensitive and registered with the preferred case to be generated by senders.
- The registration
MUST name a responsible party for the registration. - The registration
MUST name a point of contact. - The registration
MAY name a set of specifications associated with that token. Such specifications need not be publicly available. - The registration
SHOULD name a set of expected “protocol-version” tokens associated with that token at the time of registration. - The responsible party
MAY change the registration at any time. The IANA will keep a record of all such changes, and make them available upon request. - The IESG
MAY reassign responsibility for a protocol token. This will normally only be used in the case when a responsible party cannot be contacted.
- Clients that have been idle for an extended period, following which the server might wish to cause the client to re-prompt the user for credentials.
- Applications that include a session termination indication (such as a “logout” or “commit” button on a page) after which the server side of the application “knows” that there is no further reason for the client to retain the credentials.
| Method | Safe | Idempotent | Section |
|---|---|---|---|
| CONNECT | no | no |
|
| DELETE | no | yes |
|
| GET | yes | yes |
|
| HEAD | yes | yes |
|
| OPTIONS | yes | yes |
|
| POST | no | no |
|
| PUT | no | yes |
|
| TRACE | yes | yes |
|
| * | no | no |
|
| Value | Description | Section |
|---|---|---|
| 100 | Continue |
|
| 101 | Switching Protocols |
|
| 200 | OK |
|
| 201 | Created |
|
| 202 | Accepted |
|
| 203 | Non-Authoritative Information |
|
| 204 | No Content |
|
| 205 | Reset Content |
|
| 206 | Partial Content |
|
| 300 | Multiple Choices |
|
| 301 | Moved Permanently |
|
| 302 | Found |
|
| 303 | See Other |
|
| 304 | Not Modified |
|
| 305 | Use Proxy |
|
| 306 | (Unused) |
|
| 307 | Temporary Redirect |
|
| 308 | Permanent Redirect |
|
| 400 | Bad Request |
|
| 401 | Unauthorized |
|
| 402 | Payment Required |
|
| 403 | Forbidden |
|
| 404 | Not Found |
|
| 405 | Method Not Allowed |
|
| 406 | Not Acceptable |
|
| 407 | Proxy Authentication Required |
|
| 408 | Request Timeout |
|
| 409 | Conflict |
|
| 410 | Gone |
|
| 411 | Length Required |
|
| 412 | Precondition Failed |
|
| 413 | Content Too Large |
|
| 414 | URI Too Long |
|
| 415 | Unsupported Media Type |
|
| 416 | Range Not Satisfiable |
|
| 417 | Expectation Failed |
|
| 418 | (Unused) |
|
| 421 | Misdirected Request |
|
| 422 | Unprocessable Content |
|
| 426 | Upgrade Required |
|
| 500 | Internal Server Error |
|
| 501 | Not Implemented |
|
| 502 | Bad Gateway |
|
| 503 | Service Unavailable |
|
| 504 | Gateway Timeout |
|
| 505 | HTTP Version Not Supported |
|
- The ‘Applicable Protocol’ field has been omitted.
- Entries that had a status of ‘standard’, ‘experimental’, ‘reserved’, or ‘informational’ have been made to have a status of ‘permanent’.
- Provisional entries without a status have been made to have a status of ‘provisional’.
- Permanent entries without a status (after confirmation that the registration document did not define one) have been made to have a status of ‘provisional’. The expert(s) can choose to update the entries’ status if there is evidence that another is more appropriate.
| Field Name | Status | Section | Comments |
|---|---|---|---|
| Accept | permanent |
|
|
| Accept-Charset | deprecated |
|
|
| Accept-Encoding | permanent |
|
|
| Accept-Language | permanent |
|
|
| Accept-Ranges | permanent |
|
|
| Allow | permanent |
|
|
| Authentication-Info | permanent |
|
|
| Authorization | permanent |
|
|
| Connection | permanent |
|
|
| Content-Encoding | permanent |
|
|
| Content-Language | permanent |
|
|
| Content-Length | permanent |
|
|
| Content-Location | permanent |
|
|
| Content-Range | permanent |
|
|
| Content-Type | permanent |
|
|
| Date | permanent |
|
|
| ETag | permanent |
|
|
| Expect | permanent |
|
|
| From | permanent |
|
|
| Host | permanent |
|
|
| If-Match | permanent |
|
|
| If-Modified-Since | permanent |
|
|
| If-None-Match | permanent |
|
|
| If-Range | permanent |
|
|
| If-Unmodified-Since | permanent |
|
|
| Last-Modified | permanent |
|
|
| Location | permanent |
|
|
| Max-Forwards | permanent |
|
|
| Proxy-Authenticate | permanent |
|
|
| Proxy-Authentication-Info | permanent |
|
|
| Proxy-Authorization | permanent |
|
|
| Range | permanent |
|
|
| Referer | permanent |
|
|
| Retry-After | permanent |
|
|
| Server | permanent |
|
|
| TE | permanent |
|
|
| Trailer | permanent |
|
|
| Upgrade | permanent |
|
|
| User-Agent | permanent |
|
|
| Vary | permanent |
|
|
| Via | permanent |
|
|
| WWW-Authenticate | permanent |
|
|
| * | permanent |
|
(reserved) |
| Name | Description | Section |
|---|---|---|
| compress | UNIX “compress” data format |
|
| deflate | “deflate” compressed data ( |
|
| gzip | GZIP file format |
|
| identity | Reserved |
|
| x-compress | Deprecated (alias for compress) |
|
| x-gzip | Deprecated (alias for gzip) |
|
| Range Unit Name | Description | Section |
|---|---|---|
| bytes | a range of octets |
|
| none | reserved as keyword to indicate range requests are not supported |
|
- use this document as “Reference”, and
- when currently unspecified, set “Assignee” to “IESG” and “Contact” to “IETF_Chair”.
| Name | Description | Expected Version Tokens | Section |
|---|---|---|---|
| HTTP | Hypertext Transfer Protocol | any DIGIT.DIGIT (e.g., “2.0”) |
|
-
1 -
- 100 Continue (status code)
-
- 100-continue (expect value)
-
- 101 Switching Protocols (status code)
-
- 1xx Informational (status code class)
-
-
-
2 -
- 200 OK (status code)
-
- 201 Created (status code)
-
- 202 Accepted (status code)
-
- 203 Non-Authoritative Information (status code)
-
- 204 No Content (status code)
-
- 205 Reset Content (status code)
-
- 206 Partial Content (status code)
-
- 2xx Successful (status code class)
-
-
-
3 -
- 300 Multiple Choices (status code)
-
- 301 Moved Permanently (status code)
-
- 302 Found (status code)
-
- 303 See Other (status code)
-
- 304 Not Modified (status code)
-
- 305 Use Proxy (status code)
-
- 306 (Unused) (status code)
-
- 307 Temporary Redirect (status code)
-
- 308 Permanent Redirect (status code)
-
- 3xx Redirection (status code class)
-
-
-
4 -
- 400 Bad Request (status code)
-
- 401 Unauthorized (status code)
-
- 402 Payment Required (status code)
-
- 403 Forbidden (status code)
-
- 404 Not Found (status code)
-
- 405 Method Not Allowed (status code)
-
- 406 Not Acceptable (status code)
-
- 407 Proxy Authentication Required (status code)
-
- 408 Request Timeout (status code)
-
- 409 Conflict (status code)
-
- 410 Gone (status code)
-
- 411 Length Required (status code)
-
- 412 Precondition Failed (status code)
-
- 413 Content Too Large (status code)
-
- 414 URI Too Long (status code)
-
- 415 Unsupported Media Type (status code)
-
- 416 Range Not Satisfiable (status code)
-
- 417 Expectation Failed (status code)
-
- 418 (Unused) (status code)
-
- 421 Misdirected Request (status code)
-
- 422 Unprocessable Content (status code)
-
- 426 Upgrade Required (status code)
-
- 4xx Client Error (status code class)
-
-
-
5 -
- 500 Internal Server Error (status code)
-
- 501 Not Implemented (status code)
-
- 502 Bad Gateway (status code)
-
- 503 Service Unavailable (status code)
-
- 504 Gateway Timeout (status code)
-
- 505 HTTP Version Not Supported (status code)
-
- 5xx Server Error (status code class)
-
-
-
A -
- accelerator
-
- Accept header field
-
- Accept-Charset header field
-
- Accept-Encoding header field
-
- Accept-Language header field
-
- Accept-Ranges header field
-
- Allow header field
-
- Authentication-Info header field
-
- authoritative response
-
- Authorization header field
-
-
-
B -
- browser
-
-
-
C -
- cache
-
- cacheable
-
- client
-
- clock
-
- complete
-
- compress (Coding Format)
-
- compress (content coding)
-
- conditional request
-
- CONNECT method
-
- connection
-
- Connection header field
-
- content
-
- content coding
-
- content negotiation
-
- Content-Encoding header field
-
- Content-Language header field
-
- Content-Length header field
-
- Content-Location header field
-
- Content-MD5 header field
-
- Content-Range header field
-
; - Content-Type header field
-
- control data
-
-
-
D -
- Date header field
-
- deflate (Coding Format)
-
- deflate (content coding)
-
- DELETE method
-
- Delimiters
-
- downstream
-
-
-
E -
- effective request URI
-
- ETag field
-
- Expect header field
-
-
-
F -
- field
-
; - field line
-
- field line value
-
- field name
-
- field value
-
- Fields
-
- *
-
- Accept
-
- Accept-Charset
-
- Accept-Encoding
-
- Accept-Language
-
- Accept-Ranges
-
- Allow
-
- Authentication-Info
-
- Authorization
-
- Connection
-
- Content-Encoding
-
- Content-Language
-
- Content-Length
-
- Content-Location
-
- Content-MD5
-
- Content-Range
-
; - Content-Type
-
- Date
-
- ETag
-
- Expect
-
- From
-
- Host
-
- If-Match
-
- If-Modified-Since
-
- If-None-Match
-
- If-Range
-
- If-Unmodified-Since
-
- Last-Modified
-
- Location
-
- Max-Forwards
-
- Proxy-Authenticate
-
- Proxy-Authentication-Info
-
- Proxy-Authorization
-
- Range
-
- Referer
-
- Retry-After
-
- Server
-
- TE
-
- Trailer
-
- Upgrade
-
- User-Agent
-
- Vary
-
- Via
-
- WWW-Authenticate
-
- Fragment Identifiers
-
- From header field
-
-
-
G -
- gateway
-
- GET method
-
- Grammar
-
- ALPHA
-
- Accept
-
- Accept-Charset
-
- Accept-Encoding
-
- Accept-Language
-
- Accept-Ranges
-
- Allow
-
- Authentication-Info
-
- Authorization
-
- BWS
-
- CR
-
- CRLF
-
- CTL
-
- Connection
-
- Content-Encoding
-
- Content-Language
-
- Content-Length
-
- Content-Location
-
- Content-Range
-
- Content-Type
-
- DIGIT
-
- DQUOTE
-
- Date
-
- ETag
-
- Expect
-
- From
-
- GMT
-
- HEXDIG
-
- HTAB
-
- HTTP-date
-
- Host
-
- IMF-fixdate
-
- If-Match
-
- If-Modified-Since
-
- If-None-Match
-
- If-Range
-
- If-Unmodified-Since
-
- LF
-
- Last-Modified
-
- Location
-
- Max-Forwards
-
- OCTET
-
- OWS
-
- Proxy-Authenticate
-
- Proxy-Authentication-Info
-
- Proxy-Authorization
-
- RWS
-
- Range
-
- Referer
-
- Retry-After
-
- SP
-
- Server
-
- TE
-
- Trailer
-
- URI-reference
-
- Upgrade
-
- User-Agent
-
- VCHAR
-
- Vary
-
- Via
-
- WWW-Authenticate
-
- absolute-URI
-
- absolute-path
-
- acceptable-ranges
-
- asctime-date
-
- auth-param
-
- auth-scheme
-
- authority
-
- challenge
-
- codings
-
- comment
-
- complete-length
-
- connection-option
-
- content-coding
-
- credentials
-
- ctext
-
- date1
-
- day
-
- day-name
-
- day-name-l
-
- delay-seconds
-
- entity-tag
-
- etagc
-
- field-content
-
- field-name
-
; - field-value
-
- field-vchar
-
- first-pos
-
; - hour
-
- http-URI
-
- https-URI
-
- incl-range
-
- int-range
-
- language-range
-
- language-tag
-
- last-pos
-
; - media-range
-
- media-type
-
- method
-
- minute
-
- month
-
- obs-date
-
- obs-text
-
- opaque-tag
-
- other-range
-
- parameter
-
- parameter-name
-
- parameter-value
-
- parameters
-
- partial-URI
-
- port
-
- product
-
- product-version
-
- protocol-name
-
- protocol-version
-
- pseudonym
-
- qdtext
-
- query
-
- quoted-pair
-
- quoted-string
-
- qvalue
-
- range-resp
-
- range-set
-
- range-spec
-
- range-unit
-
- ranges-specifier
-
- received-by
-
- received-protocol
-
- rfc850-date
-
- second
-
- segment
-
- subtype
-
- suffix-length
-
- suffix-range
-
- t-codings
-
- tchar
-
- time-of-day
-
- token
-
- token68
-
- transfer-coding
-
- transfer-parameter
-
- type
-
- unsatisfied-range
-
- uri-host
-
- weak
-
- weight
-
- year
-
- gzip (Coding Format)
-
- gzip (content coding)
-
-
-
H -
- HEAD method
-
- Header Fields
-
- Accept
-
- Accept-Charset
-
- Accept-Encoding
-
- Accept-Language
-
- Accept-Ranges
-
- Allow
-
- Authentication-Info
-
- Authorization
-
- Connection
-
- Content-Encoding
-
- Content-Language
-
- Content-Length
-
- Content-Location
-
- Content-MD5
-
- Content-Range
-
; - Content-Type
-
- Date
-
- ETag
-
- Expect
-
- From
-
- Host
-
- If-Match
-
- If-Modified-Since
-
- If-None-Match
-
- If-Range
-
- If-Unmodified-Since
-
- Last-Modified
-
- Location
-
- Max-Forwards
-
- Proxy-Authenticate
-
- Proxy-Authentication-Info
-
- Proxy-Authorization
-
- Range
-
- Referer
-
- Retry-After
-
- Server
-
- TE
-
- Trailer
-
- Upgrade
-
- User-Agent
-
- Vary
-
- Via
-
- WWW-Authenticate
-
- header section
-
- Host header field
-
- http URI scheme
-
- https URI scheme
-
-
-
I -
- idempotent
-
- If-Match header field
-
- If-Modified-Since header field
-
- If-None-Match header field
-
- If-Range header field
-
- If-Unmodified-Since header field
-
- inbound
-
- incomplete
-
- interception proxy
-
- intermediary
-
-
-
L -
- Last-Modified header field
-
- list-based field
-
- Location header field
-
-
-
M -
- Max-Forwards header field
-
- Media Type
-
- multipart/byteranges
-
- multipart/x-byteranges
-
- message
-
; - message abstraction
-
- messages
-
- metadata
-
- Method
-
- *
-
- CONNECT
-
- DELETE
-
- GET
-
- HEAD
-
- OPTIONS
-
- POST
-
- PUT
-
- TRACE
-
- multipart/byteranges Media Type
-
- multipart/x-byteranges Media Type
-
-
-
N -
- non-transforming proxy
-
-
-
O -
- OPTIONS method
-
- origin
-
; - origin server
-
- outbound
-
-
-
P -
- phishing
-
- POST method
-
- Protection Space
-
- proxy
-
- Proxy-Authenticate header field
-
- Proxy-Authentication-Info header field
-
- Proxy-Authorization header field
-
- PUT method
-
-
-
R -
- Range header field
-
- Realm
-
- recipient
-
- Referer header field
-
- representation
-
- request
-
- request target
-
- resource
-
; - response
-
- Retry-After header field
-
- reverse proxy
-
-
-
S -
- safe
-
- satisfiable range
-
- secured
-
- selected representation
-
; ; - self-descriptive
-
- sender
-
- server
-
- Server header field
-
- singleton field
-
- spider
-
- Status Code
-
- Status Codes
-
- Final
-
- Informational
-
- Interim
-
- Status Codes Classes
-
- 1xx Informational
-
- 2xx Successful
-
- 3xx Redirection
-
- 4xx Client Error
-
- 5xx Server Error
-
-
-
T -
- target resource
-
- target URI
-
- TE header field
-
- TRACE method
-
- Trailer Fields
-
-
- ETag
-
- Trailer header field
-
- trailer section
-
- trailers
-
- transforming proxy
-
- transparent proxy
-
- tunnel
-
-
-
U -
- unsatisfiable range
-
- Upgrade header field
-
- upstream
-
- URI
-
-
- origin
-
- URI reference
-
- URI scheme
-
- http
-
- https
-
- user agent
-
- User-Agent header field
-
-
-
V -
- validator
-
-
- strong
-
- weak
-
- Vary header field
-
- Via header field
-
-
-
W -
- WWW-Authenticate header field
-
-
-
X -
- x-compress (content coding)
-
- x-gzip (content coding)
-
-