| < draft-ietf-httpbis-cache-header-05.txt | draft-ietf-httpbis-cache-header-06.txt > | |||
|---|---|---|---|---|
| HTTP M. Nottingham | HTTP M. Nottingham | |||
| Internet-Draft Fastly | Internet-Draft Fastly | |||
| Intended status: Standards Track August 11, 2020 | Intended status: Standards Track 13 January 2021 | |||
| Expires: February 12, 2021 | Expires: 17 July 2021 | |||
| The Cache-Status HTTP Response Header Field | The Cache-Status HTTP Response Header Field | |||
| draft-ietf-httpbis-cache-header-05 | draft-ietf-httpbis-cache-header-06 | |||
| Abstract | Abstract | |||
| To aid debugging, HTTP caches often append header fields to a | To aid debugging, HTTP caches often append header fields to a | |||
| response explaining how they handled the request. This specification | response explaining how they handled the request. This specification | |||
| codifies that practice and updates it to align with HTTP's current | codifies that practice and updates it to align with HTTP's current | |||
| caching model. | caching model. | |||
| Note to Readers | Note to Readers | |||
| _RFC EDITOR: please remove this section before publication_ | _RFC EDITOR: please remove this section before publication_ | |||
| Discussion of this draft takes place on the HTTP working group | Discussion of this draft takes place on the HTTP working group | |||
| mailing list (ietf-http-wg@w3.org), which is archived at | mailing list (ietf-http-wg@w3.org), which is archived at | |||
| https://lists.w3.org/Archives/Public/ietf-http-wg/ [1]. | https://lists.w3.org/Archives/Public/ietf-http-wg/ | |||
| (https://lists.w3.org/Archives/Public/ietf-http-wg/). | ||||
| Working Group information can be found at https://httpwg.org/ [2]; | Working Group information can be found at https://httpwg.org/ | |||
| source code and issues list for this draft can be found at | (https://httpwg.org/); source code and issues list for this draft can | |||
| https://github.com/httpwg/http-extensions/labels/cache-header [3]. | be found at https://github.com/httpwg/http-extensions/labels/cache- | |||
| header (https://github.com/httpwg/http-extensions/labels/cache- | ||||
| header). | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on February 12, 2021. | This Internet-Draft will expire on 17 July 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
| publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
| carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. Code Components | |||
| to this document. Code Components extracted from this document must | extracted from this document must include Simplified BSD License text | |||
| include Simplified BSD License text as described in Section 4.e of | as described in Section 4.e of the Trust Legal Provisions and are | |||
| the Trust Legal Provisions and are provided without warranty as | provided without warranty as described in the Simplified BSD License. | |||
| described in the Simplified BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Notational Conventions . . . . . . . . . . . . . . . . . 3 | 1.1. Notational Conventions . . . . . . . . . . . . . . . . . 3 | |||
| 2. The Cache-Status HTTP Response Header Field . . . . . . . . . 3 | 2. The Cache-Status HTTP Response Header Field . . . . . . . . . 3 | |||
| 2.1. The hit parameter . . . . . . . . . . . . . . . . . . . . 4 | 2.1. The hit parameter . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. The fwd parameter . . . . . . . . . . . . . . . . . . . . 4 | 2.2. The fwd parameter . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.3. The fwd-status parameter . . . . . . . . . . . . . . . . 5 | 2.3. The fwd-status parameter . . . . . . . . . . . . . . . . 5 | |||
| 2.4. The ttl parameter . . . . . . . . . . . . . . . . . . . . 5 | 2.4. The ttl parameter . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.5. The stored parameter . . . . . . . . . . . . . . . . . . 5 | 2.5. The stored parameter . . . . . . . . . . . . . . . . . . 5 | |||
| 2.6. The collapsed parameter . . . . . . . . . . . . . . . . . 5 | 2.6. The collapsed parameter . . . . . . . . . . . . . . . . . 5 | |||
| 2.7. The key parameter . . . . . . . . . . . . . . . . . . . . 5 | 2.7. The key parameter . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.8. The detail parameter . . . . . . . . . . . . . . . . . . 5 | 2.8. The detail parameter . . . . . . . . . . . . . . . . . . 6 | |||
| 3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. Defining New Proxy-Status Parameters . . . . . . . . . . . . 7 | 4. Defining New Proxy-Status Parameters . . . . . . . . . . . . 7 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 8 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 9 | 7.2. Informative References . . . . . . . . . . . . . . . . . 9 | |||
| 7.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | ||||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 1. Introduction | 1. Introduction | |||
| To aid debugging, HTTP caches often append header fields to a | To aid debugging, HTTP caches often append header fields to a | |||
| response explaining how they handled the request. Unfortunately, the | response explaining how they handled the request. Unfortunately, the | |||
| semantics of these headers are often unclear, and both the semantics | semantics of these headers are often unclear, and both the semantics | |||
| and syntax used vary greatly between implementations. | and syntax used vary between implementations. | |||
| This specification defines a single, new HTTP response header field, | This specification defines a new HTTP response header field, "Cache- | |||
| "Cache-Status" for this purpose. | Status" for this purpose. | |||
| 1.1. Notational Conventions | 1.1. Notational Conventions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| This document uses ABNF as defined in [RFC5234], along with the "%s" | This document uses ABNF as defined in [RFC5234], along with the "%s" | |||
| extension for case sensitivity defined in [RFC7405]. | extension for case sensitivity defined in [RFC7405]. | |||
| 2. The Cache-Status HTTP Response Header Field | 2. The Cache-Status HTTP Response Header Field | |||
| The Cache-Status HTTP response header indicates caches' handling of | The Cache-Status HTTP response header field indicates caches' | |||
| the request corresponding to the response it occurs within. | handling of the request corresponding to the response it occurs | |||
| within. | ||||
| Its value is a List [I-D.ietf-httpbis-header-structure]: | Its value is a List [I-D.ietf-httpbis-header-structure], Section 3.1: | |||
| Cache-Status = sf-list | Cache-Status = sf-list | |||
| Each member of the list represents a cache that has handled the | Each member of the list represents a cache that has handled the | |||
| request. The first member of the list represents the cache closest | request. The first member of the list represents the cache closest | |||
| to the origin server, and the last member of the list represents the | to the origin server, and the last member of the list represents the | |||
| cache closest to the client (possibly including the user agent's | cache closest to the user (possibly including the user agent's cache | |||
| cache itself, if it chooses to append a value). | itself, if it appends a value). | |||
| Caches determine when it is appropriate to add the Cache-Status | Caches determine when it is appropriate to add the Cache-Status | |||
| header field to a response. Some might add it to all responses, | header field to a response. Some might add it to all responses, | |||
| whereas others might only do so when specifically configured to, or | whereas others might only do so when specifically configured to, or | |||
| when the request contains a header that activates a debugging mode. | when the request contains a header field that activates a debugging | |||
| mode. | ||||
| When adding a value to the Cache-Status header field, caches SHOULD | When adding a value to the Cache-Status header field, caches SHOULD | |||
| preserve the existing contents of the header field, to allow | preserve the existing field value, to allow debugging of the entire | |||
| debugging of the entire chain of caches handling the request. | chain of caches handling the request. | |||
| Each list member identifies the cache that inserted that value, and | Each list member identifies the cache that inserted it and MUST be a | |||
| MUST be a String or Token. Depending on the deployment, this might | String or Token. Depending on the deployment, this might be a | |||
| be a product or service name (e.g., ExampleCache or "Example CDN"), a | product or service name (e.g., ExampleCache or "Example CDN"), a | |||
| hostname ("cache-3.example.com"), and IP address, or a generated | hostname ("cache-3.example.com"), an IP address, or a generated | |||
| string. | string. | |||
| Each member of the list can also have parameters that describe that | Each member of the list can have parameters that describe that | |||
| cache's handling of the request. While all of these parameters are | cache's handling of the request. While these parameters are | |||
| OPTIONAL, caches are encouraged to provide as much information as | OPTIONAL, caches are encouraged to provide as much information as | |||
| possible. | possible. | |||
| This specification defines these parameters: | This specification defines the following parameters: | |||
| hit = sf-boolean | hit = sf-boolean | |||
| fwd = sf-token | fwd = sf-token | |||
| fwd-status = sf-integer | fwd-status = sf-integer | |||
| ttl = sf-integer | ttl = sf-integer | |||
| stored = sf-boolean | stored = sf-boolean | |||
| collapsed = sf-boolean | collapsed = sf-boolean | |||
| key = sf-string | key = sf-string | |||
| detail = sf-token / sf-string | detail = sf-token / sf-string | |||
| 2.1. The hit parameter | 2.1. The hit parameter | |||
| "hit", when true, indicates that the request was satisfied by the | "hit", when true, indicates that the request was satisfied by the | |||
| cache; i.e., it did not go forward, and the response was obtained | cache; i.e., it was not forwarded, and the response was obtained from | |||
| from the cache. A response that originally was produced by the | the cache. A response that was originally produced by the origin but | |||
| origin but was modified by the cache (for example, a 304 or 206 | was modified by the cache (for example, a 304 or 206 status code) is | |||
| status code) is still considered a hit. | still considered a hit, as long as it did not go forward (e.g., for | |||
| validation). | ||||
| "hit" and "fwd" are exclusive; only one of them should appear on each | "hit" and "fwd" are exclusive; only one of them should appear on each | |||
| list member. | list member. | |||
| 2.2. The fwd parameter | 2.2. The fwd parameter | |||
| "fwd" indicates that the request went forward towards the origin, and | "fwd" indicates that the request went forward towards the origin, and | |||
| why. | why. | |||
| The following values are defined to explain why the request went | The following parameter values are defined to explain why the request | |||
| forward: | went forward, from most specific to least: | |||
| o uri-miss - The cache did not contain any responses that matched | * bypass - The cache was configured to not handle this request | |||
| * method - The request method's semantics require the request to be | ||||
| forwarded | ||||
| * request - The cache was able to select a fresh response for the | ||||
| request, but the request's semantics (e.g., Cache-Control request | ||||
| directives) did not allow its use | ||||
| * stale - The cache was able to select a response for the request, | ||||
| but it was stale | ||||
| * uri-miss - The cache did not contain any responses that matched | ||||
| the request URI | the request URI | |||
| o vary-miss - The cache contained a response that matched the | * vary-miss - The cache contained a response that matched the | |||
| request URI, but could not select a response based upon this | request URI, but could not select a response based upon this | |||
| request's headers and stored Vary headers. | request's headers and stored Vary headers. | |||
| o miss - The cache did not contain any responses that could be used | * miss - The cache did not contain any responses that could be used | |||
| to satisfy this request (to be used when an implementation cannot | to satisfy this request (to be used when an implementation cannot | |||
| distinguish between uri-miss and vary-miss) | distinguish between uri-miss and vary-miss) | |||
| o stale - The cache was able to select a response for the request, | The most specific reason that the cache is aware of SHOULD be used. | |||
| but it was stale | ||||
| o request - The cache was able to select a fresh response for the | ||||
| request, but client request headers (e.g., Cache-Control request | ||||
| directives) did not allow its use | ||||
| o bypass - The cache was configured to not handle this request | ||||
| 2.3. The fwd-status parameter | 2.3. The fwd-status parameter | |||
| "fwd-status" indicates what status code the next hop server returned | "fwd-status" indicates what status code the next hop server returned | |||
| in response to the request. Only meaningful when "fwd" is present; | in response to the request. Only meaningful when "fwd" is present; | |||
| if "fwd-status" is not present but "fwd" is, it defaults to the | if "fwd-status" is not present but "fwd" is, it defaults to the | |||
| status code sent in the response. | status code sent in the response. | |||
| This parameter is useful to distinguish cases when the next hop | This parameter is useful to distinguish cases when the next hop | |||
| server sends a 304 Not Modified response to a conditional request, or | server sends a 304 Not Modified response to a conditional request, or | |||
| a 206 Partial Response because of a range request. | a 206 Partial Response because of a range request. | |||
| 2.4. The ttl parameter | 2.4. The ttl parameter | |||
| "ttl" indicates the response's remaining freshness lifetime as | "ttl" indicates the response's remaining freshness lifetime as | |||
| calculated by the cache, as an integer number of seconds, measured | calculated by the cache, as an integer number of seconds, measured | |||
| when the response is sent by the cache. This includes freshness | when the response header section is sent by the cache. This includes | |||
| assigned by the cache; e.g., through heuristics, local configuration, | freshness assigned by the cache; e.g., through heuristics, local | |||
| or other factors. May be negative, to indicate staleness. | configuration, or other factors. May be negative, to indicate | |||
| staleness. | ||||
| 2.5. The stored parameter | 2.5. The stored parameter | |||
| "stored" indicates whether the cache stored the response; a true | "stored" indicates whether the cache stored the response; a true | |||
| value indicates that it did. Only meaningful when fwd is present. | value indicates that it did. Only meaningful when fwd is present. | |||
| 2.6. The collapsed parameter | 2.6. The collapsed parameter | |||
| "collapsed" indicates whether this request was collapsed together | "collapsed" indicates whether this request was collapsed together | |||
| with one or more other forward requests; if true, the response was | with one or more other forward requests; if true, the response was | |||
| skipping to change at page 6, line 4 ¶ | skipping to change at page 6, line 14 ¶ | |||
| 2.8. The detail parameter | 2.8. The detail parameter | |||
| "detail" allows implementations to convey additional information not | "detail" allows implementations to convey additional information not | |||
| captured in other parameters; for example, implementation-specific | captured in other parameters; for example, implementation-specific | |||
| states, or other caching-related metrics. | states, or other caching-related metrics. | |||
| For example: | For example: | |||
| Cache-Status: ExampleCache; hit; detail=MEMORY | Cache-Status: ExampleCache; hit; detail=MEMORY | |||
| The semantics of a detail parameter are always specific to the cache | The semantics of a detail parameter are always specific to the cache | |||
| that sent it; even if a member of details from another cache shares | that sent it; even if a member of details from another cache shares | |||
| the same name, it might not mean the same thing. | the same name, it might not mean the same thing. | |||
| This parameter is intentionally limited. If an implementation needs | This parameter is intentionally limited. If an implementation's | |||
| to convey additional information, they are encouraged to register | developer or operator needs to convey additional information in an | |||
| extension parameters (see Section 4) or define another header field. | interoperable fashion, they are encouraged to register extension | |||
| parameters (see Section 4) or define another header field. | ||||
| 3. Examples | 3. Examples | |||
| The most minimal cache hit: | The most minimal cache hit: | |||
| Cache-Status: ExampleCache; hit | Cache-Status: ExampleCache; hit | |||
| ... but a polite cache will give some more information, e.g.: | ... but a polite cache will give some more information, e.g.: | |||
| Cache-Status: ExampleCache; hit; ttl=376 | Cache-Status: ExampleCache; hit; ttl=376 | |||
| skipping to change at page 6, line 41 ¶ | skipping to change at page 7, line 4 ¶ | |||
| Cache-Status: ExampleCache; fwd=stale; fwd-status=304 | Cache-Status: ExampleCache; fwd=stale; fwd-status=304 | |||
| A miss that was collapsed with another request: | A miss that was collapsed with another request: | |||
| Cache-Status: ExampleCache; fwd=uri-miss; collapsed | Cache-Status: ExampleCache; fwd=uri-miss; collapsed | |||
| A miss that the cache attempted to collapse, but couldn't: | A miss that the cache attempted to collapse, but couldn't: | |||
| Cache-Status: ExampleCache; fwd=uri-miss; collapsed=?0 | Cache-Status: ExampleCache; fwd=uri-miss; collapsed=?0 | |||
| Going through two layers of caching, both of which were hits, and the | Going through two layers of caching, both of which were hits, and the | |||
| second collapsed with other requests: | second collapsed with other requests: | |||
| Cache-Status: OriginCache; hit; ttl=1100; collapsed, | Cache-Status: OriginCache; hit; ttl=1100; collapsed, | |||
| "CDN Company Here"; hit; ttl=545 | "CDN Company Here"; hit; ttl=545 | |||
| 4. Defining New Proxy-Status Parameters | 4. Defining New Proxy-Status Parameters | |||
| New Cache-Status Parameters can be defined by registering them in the | New Cache-Status Parameters can be defined by registering them in the | |||
| HTTP Cache-Status Parameters registry. | HTTP Cache-Status Parameters registry. | |||
| Registration requests are reviewed and approved by a Designated | Registration requests are reviewed and approved by a Designated | |||
| Expert, as per [RFC8126], Section 4.5. A specification document is | Expert, as per [RFC8126], Section 4.5. A specification document is | |||
| appreciated, but not required. | appreciated, but not required. | |||
| The Expert(s) should consider the following factors when evaluating | The Expert(s) should consider the following factors when evaluating | |||
| requests: | requests: | |||
| o Community feedback | * Community feedback | |||
| o If the value is sufficiently well-defined | * If the value is sufficiently well-defined | |||
| o Generic parameters are preferred over vendor-specific, | * Generic parameters are preferred over vendor-specific, | |||
| application-specific or deployment-specific values. If a generic | application-specific, or deployment-specific values. If a generic | |||
| value cannot be agreed upon in the community, the parameter's name | value cannot be agreed upon in the community, the parameter's name | |||
| should be correspondingly specific (e.g., with a prefix that | should be correspondingly specific (e.g., with a prefix that | |||
| identifies the vendor, application or deployment). | identifies the vendor, application or deployment). | |||
| Registration requests should use the following template: | Registration requests should use the following template: | |||
| o Name: [a name for the Cache-Status Parameter that matches key] | * Name: [a name for the Cache-Status Parameter that matches key] | |||
| o Description: [a description of the parameter semantics and value] | * Description: [a description of the parameter semantics and value] | |||
| o Reference: [to a specification defining this parameter] | * Reference: [to a specification defining this parameter] | |||
| See the registry at https://iana.org/assignments/http-cache-status | See the registry at https://iana.org/assignments/http-cache-status | |||
| [4] for details on where to send registration requests. | (https://iana.org/assignments/http-cache-status) for details on where | |||
| to send registration requests. | ||||
| 5. IANA Considerations | 5. IANA Considerations | |||
| Upon publication, please create the HTTP Cache-Status Parameters | Upon publication, please create the HTTP Cache-Status Parameters | |||
| registry at https://iana.org/assignments/http-cache-status [5] and | registry at https://iana.org/assignments/http-cache-status | |||
| populate it with the types defined in Section 2; see Section 4 for | (https://iana.org/assignments/http-cache-status) and populate it with | |||
| its associated procedures. | the types defined in Section 2; see Section 4 for its associated | |||
| procedures. | ||||
| 6. Security Considerations | 6. Security Considerations | |||
| Attackers can use the information in Cache-Status to probe the | Attackers can use the information in Cache-Status to probe the | |||
| behaviour of the cache (and other components), and infer the activity | behaviour of the cache (and other components), and infer the activity | |||
| of those using the cache. The Cache-Status header field may not | of those using the cache. The Cache-Status header field may not | |||
| create these risks on its own, but can assist attackers in exploiting | create these risks on its own, but can assist attackers in exploiting | |||
| them. | them. | |||
| For example, knowing if a cache has stored a response can help an | For example, knowing if a cache has stored a response can help an | |||
| skipping to change at page 8, line 25 ¶ | skipping to change at page 8, line 33 ¶ | |||
| To avoid assisting such attacks, the Cache-Status header field can be | To avoid assisting such attacks, the Cache-Status header field can be | |||
| omitted, only sent when the client is authorized to receive it, or | omitted, only sent when the client is authorized to receive it, or | |||
| only send sensitive information (e.g., the key parameter) when the | only send sensitive information (e.g., the key parameter) when the | |||
| client is authorized. | client is authorized. | |||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [I-D.ietf-httpbis-header-structure] | ||||
| Nottingham, M. and P. Kamp, "Structured Field Values for | ||||
| HTTP", draft-ietf-httpbis-header-structure-19 (work in | ||||
| progress), June 2020. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | ||||
| Specifications: ABNF", STD 68, RFC 5234, | ||||
| DOI 10.17487/RFC5234, January 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5234>. | ||||
| [RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF", | ||||
| RFC 7405, DOI 10.17487/RFC7405, December 2014, | ||||
| <https://www.rfc-editor.org/info/rfc7405>. | ||||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
| Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
| <https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
| [I-D.ietf-httpbis-header-structure] | ||||
| Nottingham, M. and P. Kamp, "Structured Field Values for | ||||
| HTTP", Work in Progress, Internet-Draft, draft-ietf- | ||||
| httpbis-header-structure-19, 3 June 2020, | ||||
| <http://www.ietf.org/internet-drafts/draft-ietf-httpbis- | ||||
| header-structure-19.txt>. | ||||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | ||||
| Specifications: ABNF", STD 68, RFC 5234, | ||||
| DOI 10.17487/RFC5234, January 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5234>. | ||||
| [RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF", | ||||
| RFC 7405, DOI 10.17487/RFC7405, December 2014, | ||||
| <https://www.rfc-editor.org/info/rfc7405>. | ||||
| 7.2. Informative References | 7.2. Informative References | |||
| [ENTANGLE] | [ENTANGLE] Kettle, J., "Web Cache Entanglement: Novel Pathways to | |||
| Kettle, J., "Web Cache Entanglement: Novel Pathways to | ||||
| Poisoning", n.d., <https://i.blackhat.com/USA- | Poisoning", n.d., <https://i.blackhat.com/USA- | |||
| 20/Wednesday/us-20-Kettle-Web-Cache-Entanglement-Novel- | 20/Wednesday/us-20-Kettle-Web-Cache-Entanglement-Novel- | |||
| Pathways-To-Poisoning-wp.pdf>. | Pathways-To-Poisoning-wp.pdf>. | |||
| 7.3. URIs | ||||
| [1] https://lists.w3.org/Archives/Public/ietf-http-wg/ | ||||
| [2] https://httpwg.org/ | ||||
| [3] https://github.com/httpwg/http-extensions/labels/cache-header | ||||
| [4] https://iana.org/assignments/http-cache-status | ||||
| [5] https://iana.org/assignments/http-cache-status | ||||
| Author's Address | Author's Address | |||
| Mark Nottingham | Mark Nottingham | |||
| Fastly | Fastly | |||
| made in | Prahran VIC | |||
| Prahran, VIC | ||||
| Australia | Australia | |||
| Email: mnot@mnot.net | Email: mnot@mnot.net | |||
| URI: https://www.mnot.net/ | URI: https://www.mnot.net/ | |||
| End of changes. 45 change blocks. | ||||
| 103 lines changed or deleted | 104 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||