Structured Field Values for HTTP
draft-ietf-httpbis-header-structure-19
Revision differences
Document history
Date | Rev. | By | Action |
---|---|---|---|
2021-01-22
|
19 | (System) | RFC Editor state changed to AUTH48-DONE from AUTH48 |
2020-10-12
|
19 | (System) | RFC Editor state changed to AUTH48 from RFC-EDITOR |
2020-08-11
|
19 | (System) | RFC Editor state changed to RFC-EDITOR from EDIT |
2020-07-16
|
19 | Tero Kivinen | Closed request for Last Call review by SECDIR with state 'Overtaken by Events' |
2020-07-16
|
19 | Tero Kivinen | Assignment of request for Last Call review by SECDIR to Stefan Santesson was marked no-response |
2020-07-10
|
19 | (System) | IANA Action state changed to No IANA Actions from In Progress |
2020-07-10
|
19 | (System) | RFC Editor state changed to EDIT |
2020-07-10
|
19 | (System) | IESG state changed to RFC Ed Queue from Approved-announcement sent |
2020-07-10
|
19 | (System) | Announcement was received by RFC Editor |
2020-07-10
|
19 | (System) | IANA Action state changed to In Progress |
2020-07-10
|
19 | Amy Vezza | IESG state changed to Approved-announcement sent from Approved-announcement to be sent |
2020-07-10
|
19 | Amy Vezza | IESG has approved the document |
2020-07-10
|
19 | Amy Vezza | Closed "Approve" ballot |
2020-07-10
|
19 | Amy Vezza | Ballot approval text was generated |
2020-07-10
|
19 | Barry Leiba | IESG state changed to Approved-announcement to be sent from IESG Evaluation::AD Followup |
2020-06-06
|
19 | Benjamin Kaduk | [Ballot comment] Thank you for addressing my discuss (and comment!) points, and explaining in cases where they were non-issues. I do wonder whether (In Sections … [Ballot comment] Thank you for addressing my discuss (and comment!) points, and explaining in cases where they were non-issues. I do wonder whether (In Sections 3.3.1 and 3.3.2) it might be better to say "might not be preserved" rather than "may not be preserved", though it hopefully doesn't matter. |
2020-06-06
|
19 | Benjamin Kaduk | Ballot comment text updated for Benjamin Kaduk |
2020-06-06
|
19 | Benjamin Kaduk | [Ballot comment] Thank you for addressing my discuss (and comment!) points, and explaining in cases where they were non-issues. |
2020-06-06
|
19 | Benjamin Kaduk | [Ballot Position Update] Position for Benjamin Kaduk has been changed to No Objection from Discuss |
2020-06-04
|
19 | Magnus Westerlund | [Ballot comment] Thanks for addressing my issues and responding to comments. I have cleared. |
2020-06-04
|
19 | Magnus Westerlund | [Ballot Position Update] Position for Magnus Westerlund has been changed to No Objection from Discuss |
2020-06-03
|
19 | (System) | Sub state has been changed to AD Followup from Revised ID Needed |
2020-06-03
|
19 | (System) | IANA Review state changed to Version Changed - Review Needed from IANA OK - No Actions Needed |
2020-06-03
|
19 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-19.txt |
2020-06-03
|
19 | (System) | New version approved |
2020-06-03
|
19 | (System) | Request for posting confirmation emailed to previous authors: Mark Nottingham , Poul-Henning Kamp |
2020-06-03
|
19 | Mark Nottingham | Uploaded new revision |
2020-06-03
|
19 | Mark Nottingham | Uploaded new revision |
2020-05-21
|
18 | Cindy Morgan | IESG state changed to IESG Evaluation::Revised I-D Needed from IESG Evaluation |
2020-05-21
|
18 | Roman Danyliw | [Ballot comment] Thanks for explaining the parsing algorithms in my earlier DISCUSS points. ==== ** Section 4.1. Reading steps 1 – 6 like pseudo-code, if … [Ballot comment] Thanks for explaining the parsing algorithms in my earlier DISCUSS points. ==== ** Section 4.1. Reading steps 1 – 6 like pseudo-code, if Step 1 is true, output_string will be undefined in Step 6. There needs to be a step 0 which reads “Let output_string be an empty string” or Step 1 needs to explicitly initialize output_string. ** Section 4.1.8. Per Step 1, “If input_bytes is not a sequence of bytes, fail serialization”, what input wouldn’t be considered as sequence of bytes? ** Section 4.2. An algorithmic style nit. In Section 4.1, the text used an “IF x ELSE IF y ELSE IF z ELSE fail” convention. Here the text is a series of simple “IF x; IF y; IF z; …” statements. ** Section 4.2. Editorial. In step 8, s/Otherwise, return output./Else, return output./ |
2020-05-21
|
18 | Roman Danyliw | [Ballot Position Update] Position for Roman Danyliw has been changed to No Objection from Discuss |
2020-05-21
|
18 | Murray Kucherawy | [Ballot comment] Thanks for this work. I support Benjamin's DISCUSS point about case sensitivity especially with respect to how a consumed dictionary should be used. … [Ballot comment] Thanks for this work. I support Benjamin's DISCUSS point about case sensitivity especially with respect to how a consumed dictionary should be used. It's fine if you want to say that the rules for key matching are left to the authors of specifications of future structured fields, but if that's the case, please do say so. Should Section 3.1 be explicit that lists are ordered? It does say "array" but some definitions I found for that term don't explicitly say anything about order either, just a "collection". As my colleagues have already done a rather thorough job, all I have left is a few nits: Nits: Section 3.1.2: * "... key-values pairs ..." -- s/values/value/ Section 3.2: * First paragraph, two instances of "items" should be capitalized. * "Note that dictionaries ..." -- capitalize "dictionaries" * "... Inner List of tokens:" -- capitalize "tokens" * "A Dictionary with a mix of singular and list values ..." -- capitalize "list", and maybe "Item" instead of "singular"? |
2020-05-21
|
18 | Murray Kucherawy | [Ballot Position Update] New position, No Objection, has been recorded for Murray Kucherawy |
2020-05-20
|
18 | Roman Danyliw | [Ballot discuss] (I appreciate that this is pseudo-code which has inherent ambiguity sometimes, so please let me know if I've interpreted it in an unintended … [Ballot discuss] (I appreciate that this is pseudo-code which has inherent ambiguity sometimes, so please let me know if I've interpreted it in an unintended way) ** Section 4.2.6. There appears to be an inconsistency here in my reading of the algorithm given the ABNF in Section 3.3.4 -- Let’s assume of token of input_string =“*foo” -- Step 1: pass since input_string[0] = “*” -- Step 2: Set output_string = “” -- Step 3: pass since input_string[0] = “*”, -- Step 3.1: input_string[0] is still “*” and not a tchar, “:” or “/” causing a output_string=”” to be returned This doesn’t seem correct. ** Section 4.2.7. The parsing guidance doesn’t follow for me given the ABNF in Section 3.3.5. -- Let’s assume input_string = “:cHJldGVuZCB0aGlzIGlzIGJpbmFyeSBjb250ZW50Lg==:”, the example in Section 3.3.5 -- Step 1: pass since input_string[0] = “:” -- Step 2: Set input_string = “cHJldGVuZCB0aGlzIGlzIGJpbmFyeSBjb250ZW50Lg==:” -- Step 3: pass since the last character of input_string is “:” -- Step 4: Set b64_content = “cHJldGVuZCB0aGlzIGlzIGJpbmFyeSBjb250ZW50Lg==” -- Step 5 says “consume the “:” character at the beginning of the input_string, but there is no such character. It was discarded in Step 2. |
2020-05-20
|
18 | Roman Danyliw | [Ballot comment] ** Section 4.1. Reading steps 1 – 6 like pseudo-code, if Step 1 is true, output_string will be undefined in Step 6. … [Ballot comment] ** Section 4.1. Reading steps 1 – 6 like pseudo-code, if Step 1 is true, output_string will be undefined in Step 6. There needs to be a step 0 which reads “Let output_string be an empty string” or Step 1 needs to explicitly initialize output_string. ** Section 4.1.8. Per Step 1, “If input_bytes is not a sequence of bytes, fail serialization”, what input wouldn’t be considered as sequence of bytes? ** Section 4.2. An algorithmic style nit. In Section 4.1, the text used an “IF x ELSE IF y ELSE IF z ELSE fail” convention. Here the text is a series of simple “IF x; IF y; IF z; …” statements. ** Section 4.2. Editorial. In step 8, s/Otherwise, return output./Else, return output./ |
2020-05-20
|
18 | Roman Danyliw | [Ballot Position Update] New position, Discuss, has been recorded for Roman Danyliw |
2020-05-20
|
18 | Magnus Westerlund | [Ballot discuss] A. Section 3.1: The ABNF for Lists in HTTP fields is: sh-list = list-member *( *SP "," *SP list-member … [Ballot discuss] A. Section 3.1: The ABNF for Lists in HTTP fields is: sh-list = list-member *( *SP "," *SP list-member ) list-member = sh-item / inner-list Each member is separated by a comma and optional whitespace. To me there is a clarity issue that could lead to interoperability issues. Namely the difference in the meaning of whitespace between RFC 7230 and this document. Structured headers appear to not allow the HTAB that RFC7230 allows. And that is fine, but I would expect this to be more clearly discussed. If the intention was to allow for HTAB you need to use WSP rather than SP in above rule. |
2020-05-20
|
18 | Magnus Westerlund | [Ballot comment] 1. Section 2, page 8: --8<-- 42. Foo-Example Header The Foo-Example HTTP header field conveys information about how … [Ballot comment] 1. Section 2, page 8: --8<-- 42. Foo-Example Header The Foo-Example HTTP header field conveys information about how much Foo the message has. Foo-Example is a Item Structured Header [RFCxxxx]. Its value MUST be an Integer (Section Y.Y of [RFCxxxx]). Its ABNF is: Foo-Example = sh-integer Its value indicates the amount of Foo in the message, and MUST be between 0 and 10, inclusive; other values MUST cause the entire header field to be ignored. The following parameters are defined: * A Parameter whose name is "foourl", and whose value is a String (Section Y.Y of [RFCxxxx]), conveying the Foo URL for the message. See below for processing requirements. "foourl" contains a URI-reference (Section 4.1 of [RFC3986]). If its value is not a valid URI-reference, the entire header field MUST be ignored. If its value is a relative reference (Section 4.2 of [RFC3986]), it MUST be resolved (Section 5 of [RFC3986]) before being used. For example: Foo-Example: 2; foourl="https://foo.example.com/" --8<-- To me this example indicates several unclarities in this specification. First there is a lack of discussion of the definition of the field-name and clearly identify it. In the above example it is only implicit identified. I would propose that this example has an additional paragraph that explicitly defined the Structure header name as discussed in the paragraph above this example. Per RFC 7230 Section 3.2 a header field is the complete structure of field-name ":" OWS field-value OWS. However looking at this example it appears that structured header field only define the field-value. Wouldn't it be better to be explicit about these two components although I understand that field-name is a constant. This is also evident in what appears to be a grammatical error in the above paragraph: Foo-Example is a Item Structured Header [RFCxxxx]. Its value MUST be an Integer (Section Y.Y of [RFCxxxx]). Its ABNF is: The second "Its" would to me indicate Foo-Example a Item Structured Header, not the header value (field-value in ABNF) which is defined. I would suggest changing the second Its to "The Structured header value ABNF is:" |
2020-05-20
|
18 | Magnus Westerlund | [Ballot Position Update] New position, Discuss, has been recorded for Magnus Westerlund |
2020-05-20
|
18 | Martin Duke | [Ballot comment] == Discuss resolved, as have these nits below. Thanks for this noble attempt to tame the wildness that is the HTTP spec! Comments: … [Ballot comment] == Discuss resolved, as have these nits below. Thanks for this noble attempt to tame the wildness that is the HTTP spec! Comments: - While this is by no means a required change to publish this document, I found the order of Section 3 to be backwards from what would easiest to follow. The higher-order concepts (e.g. lists) are defined first, and refer to low-level concepts (like items) that are not defined till the end of the section. Nits: - In Sec 3.1.2, it might be useful to explain that in example-IntHeader, a is TRUE. - sec 3.2. Can you add some text to make it clear that the value in dictionary entries is only optional (in brackets) because of Boolean TRUE? This was not clear to me until I read sec. 4.1.2. - Sec 4. s/before HPACK is applied/before compression with HPACK (A receiver "applies" HPACK to decompress, and presumably before doing this parsing) - Sec 4.2. s/header value/field value |
2020-05-20
|
18 | Martin Duke | [Ballot Position Update] Position for Martin Duke has been changed to No Objection from Discuss |
2020-05-20
|
18 | Deborah Brungard | [Ballot Position Update] New position, No Objection, has been recorded for Deborah Brungard |
2020-05-20
|
18 | Robert Wilton | [Ballot comment] Hi, Thank you for writing this document. As per the other comments, more effort to have a tighter specification of HTTP header fields … [Ballot comment] Hi, Thank you for writing this document. As per the other comments, more effort to have a tighter specification of HTTP header fields is likely to be beneficial, particularly if there are readily usable open source libraries that implement these. However, my main comment (which possibly could have been a discuss) questions how this is specified. In my experience other specifications of encodings define exactly what the format the encoding must take, but leave it up to implementation to decide how to perform that encoding. Whereas this document specifies the format in 3 ways: (i) as a prose description of the format, (ii) as an ABNF description of the format, (iii) as a pair of algorithms that construct or parse the format. I would prefer for the ANBF to be definitive along with prose to describe/refine the ANBF as required. For the algorithms, I would have preferred that they are held in the appendix as non-normative text that provides a description of one possible method of writing the serialization or parsing code. The corner cases that the algorithm cover could be in the normative prose/ABNF description. I appreciate that this would be a significant change to the document and hence will leave it to authors/responsible AD to decide whether to process or ignore this comment. A few other comments on particular sections that I noted: 1.2. Notational Conventions When parsing from HTTP fields, implementations MUST follow the algorithms, but MAY vary in implementation so as the behaviors are indistinguishable from specified behavior. I find that sentence slightly strange in that the first part of the sentence states that your MUST follow the algorithm, and the second part states that you don't have to follow the algorithm. It might be more clear if this was worded differently. E.g. MUST have behavior that is indistinguishable from that produced by the algorithm. 3.1 Lists: An empty List is denoted by not serializing the field at all. This was slightly unclear to me. Does this mean that it isn't possible to distinguish between not providing the header and providing an empty list? Possibly it might be worth clarifying this here, although I note that it does become clear what the expected behavior is later in the document. 3.2. Dictionaries Dictionaries are ordered maps of name-value pairs, where the names are short, textual strings "short, textual" => short textual" It might also be helpful to explicitly state what the ordering is (i.e. I presume that it is the order that they are listed in the request) 3.3.1 Integers Are "00" "01" "-0", "-01" all allowed? 3.3.6. Booleans Should this cover the fact that if the boolean value is not present it is interpreted as true in a parameter or dictionary? E.g. as per the description in the parameter and dictionaries sections? Regards, Rob |
2020-05-20
|
18 | Robert Wilton | [Ballot Position Update] New position, No Objection, has been recorded for Robert Wilton |
2020-05-20
|
18 | Warren Kumari | [Ballot comment] The document starts with "Specifying the syntax of new HTTP header (and trailer) fields is an onerous task; even with the guidance in … [Ballot comment] The document starts with "Specifying the syntax of new HTTP header (and trailer) fields is an onerous task; even with the guidance in Section 8.3.1 of [RFC7231], there are many decisions - and pitfalls - for a prospective HTTP field author." -- having never done this, I'll just have to take the authors' word on this. I'm balloting NoObj in the "This is outside my area of expertise, but it is interesting" sense :-) |
2020-05-20
|
18 | Warren Kumari | [Ballot Position Update] New position, No Objection, has been recorded for Warren Kumari |
2020-05-20
|
18 | Éric Vyncke | [Ballot comment] Thank you for the work put into this document. The document is easy to read. And I loved the good old ASCII scissors … [Ballot comment] Thank you for the work put into this document. The document is easy to read. And I loved the good old ASCII scissors "--8<--" Please find below a couple on non-blocking COMMENTs. I hope that this helps to improve the document, Regards, -éric == COMMENTS == -- Section 1 -- In the sentence "the mechanisms described herein are only intended to be used with those that explicitly opt into them.", does "those" mean "existing HTTP header" or "header", this little ambiguity should be lifted. -- Section 4.1.2 -- Wow, I am impressed that nowadays, even a dictionary is sent as an HTTP header. (just a plain comment of mine even if an example would be useful for me). |
2020-05-20
|
18 | Éric Vyncke | [Ballot Position Update] New position, No Objection, has been recorded for Éric Vyncke |
2020-05-19
|
18 | Alvaro Retana | [Ballot Position Update] New position, No Objection, has been recorded for Alvaro Retana |
2020-05-18
|
18 | Benjamin Kaduk | [Ballot discuss] Thanks for this document; it will be very nice to have this more-structured mechanism available for future HTTP header (and trailer) fields. (0) … [Ballot discuss] Thanks for this document; it will be very nice to have this more-structured mechanism available for future HTTP header (and trailer) fields. (0) There seem to still be a few lingering internal inconsistencies that merit further discussion. Most notably, there is the inherent risk of skew when both prose algorithms and ABNF constructions are provided for the same structures. While Section 1.2 is careful to disclaim that the prose algorithm takes precedence over the ABNF for parsing, to my reading the coverage in the following paragraph of serialization procedures imply that it is the ABNF that is authoritative. In particular, "[i]mplementations MAY vary from the specified behavior so long as the output still matches the ABNF" seems to admit deviations from the prose algorithms but require compliance with the ABNF, in effect making the ABNF take precedence over the prose algorithm. Having a different description of the procedure normative for generation vs. consumption invites interoperability-affecting feature skew, such as the handling of empty lists as Julian noted on the list. Similarly, Section 3.1.1's prose says that inner lists are delimited "by a single space", but the ABNF uses (1*SP), allowing for more than one space. Additionally, when Section 4.2.3.2 discusses parsing parameter map keys, the handling for duplicate map key names is specified as overwriting the previous value, in contrast to the prose description (Section 3.1.2) that describes these keys as "unique within the scope [of] the Parameters they occur within". (While dictionary key names might be expected to have a similar behavior, I did not find conflicting text for that behavior.) Finally, at a prose level we employ needlessly different descriptions in several places for what is effectively the same procedure; while I do not think any of these affect interoperability (and thus the full details are in the COMMENT section), it does seem to be continuing the theme. (These are things like how we describe the algorithm to skip implicit-true for booleans, whether we initialize the output string to the empty string only to immediately add a constant literal character to it vs. initializing the output string to that literal character, etc.) A couple other points that may need further discussion: (1) What aspect(s) of structured field processing are case (in)sensitive? The only mentions I see of case sensitivity are in Section 4.2 discussing header field names and (implicitly) Section 4.2.2 discussing a "character-for-character" comparison of dictionary key names, but of course we cite RFC 5234 for ABNF, which uses case-insensitive matching. On the other hand, base64 encoding requires case sensitivity for successful round-tripping of arbitrary binary data. (2) One of the stated goals of this document is to define intentionally strict processing rules, but there are several places where we could have removed additional optionality but elected to not do so. What is the criterion for "too far" towards strictness? For example, Section 4.2.7 gives optionality with respect to base64 padding (see COMMENT). |
2020-05-18
|
18 | Benjamin Kaduk | [Ballot comment] Is the document toolchain used for this document responsible for the rendering of em dashes as a single hyphen, as opposed to normal … [Ballot comment] Is the document toolchain used for this document responsible for the rendering of em dashes as a single hyphen, as opposed to normal RFC style which uses two hyphens for an em dash? What's the motivation for "MUST omit values of boolean true" (in parameters and dictionaries)? It seems to make the output rules more complicated without a significant gain in encoding size. Section 1.2 When parsing from HTTP fields, implementations MUST follow the algorithms, but MAY vary in implementation so as the behaviors are indistinguishable from specified behavior. If there is disagreement nit: was this intended to be "so long as"? Section 2 o Define the semantics of those structures. nit: it's not clear to me what the referent for "those" is intended to be (as while the previous bullet point does give a list of types of structures, it seems to be saying that any given field has to pick exactly one, which is inconsistent with the plural "those"). o Specify any additional constraints upon the structures used, as well as the consequences when those constraints are violated. nit: similarly, the plural "structures" may not be needed here. Typically, this means that a field definition will specify the top- level type - List, Dictionary or Item - and then define its allowable types, and constraints upon them. For example, a header defined as a It's a little unfortunate that we task the word "type" with two different meanings (the top-level List/Dictionary/Item and also the more fine-grained Integer/String/etc.). We also haven't mentioned the latter type of "type" yet, though perhaps that's not an issue. List might have all Integer members, or a mix of types; a header defined as an Item might allow only Strings, and additionally only strings beginning with the letter "Q". Likewise, Inner Lists are only valid when a field definition explicitly allows them. (We haven't mentioned Inner Lists yet, so the reader might not know what to expect from them.) When parsing fails, the entire field is ignored (see Section 4.2); in most situations, violating field-specific constraints should have the same effect. Thus, if a header is defined as an Item and required to be an Integer, but a String is received, the field will by default be ignored. If the field requires different error handling, this should be explicitly specified. Explicitly specified in the specification that defines the structured field, I trust? Also, I worry that just leaving this as "in most cases" is a bit antithetical to the goals of structured headers -- don't we want to nail things down as tightly as we can? If someone wants an exception, they don't have to use structured headers... To further assure that this extensibility is available in the future, and to encourage consumers to use a complete parser implementation, a field definition can specify that "grease" Parameters be added by Do you want to reference RFC 8701 here? An extension to a structured field can then require that an entire field value be ignored by a recipient that understands the extension if constraints on the value it defines are not met. This seems to set us up for a situation in which an implementation that does not understand the extension will happily process the header field and ignore the extension, but implementations that do understand the extension will ignore the header field entirely. Is that really what's intended? (When might this be desirable?) Section 3 This section defines the abstract value types that can be composed into Structured Fields. The ABNF provided represents the on-wire nit: I don't understand the sense in which "composed into" is used -- don't individual Structured Fields need to be exactly one of these three types, irregardless of whether there is additional substructure? Section 3.1 An empty List is denoted by not serializing the field at all. So any structured field definition that allows for an empty list has to define its semantics to be equivalent to the semantics used for when the peer does not support that structured field at all? Section 3.1.1 Inner Lists are denoted by surrounding parenthesis, and have their values delimited by a single space. A field whose value is defined The ABNF does not seem to support the "single" in "single space". A header field whose value is defined as a List of Inner Lists with Parameters at both levels could look like: Is this also an inner list of strings? Section 3.1.2 Parameters are an ordered map of key-values pairs that are associated nit: is the plural "values" intentional? parameters = *( ";" *SP parameter ) parameter = param-name [ "=" param-value ] param-name = key key = ( lcalpha / "*" ) *( lcalpha / DIGIT / "_" / "-" / "." / "*" ) Huh, so I could have a key that was "*" or "*****"? (I assume that no special "wildcard" semantics are afforded to the asterisk in either usage...) Example-ParamListHeader: abc;a=1;b=2; cde_456, (ghi;jk=4 l);q="9";r=w Is it worth writing out which item/list each parameter applies to? Parsers MUST support at least 256 parameters on an Item or Inner List, and support parameter keys with at least 64 characters. Field specifications can constrain the types and cardinality of individual parameter names and values as they require. In what way might I further constrain the *type* of a parameter *name*? Section 3.2 Implementations MUST provide access to Dictionaries both by index and by name. Specifications MAY use either means of accessing the members. Example-DictHeader: en="Applepie", da=:w4ZibGV0w6ZydGU=: I, for one, would appreciate a bit of commentary on the interpretation of the final '=', even if just a forward reference to §3.3.5. Typically, a field specification will define the semantics of Dictionaries by specifying the allowed type(s) for individual member names, as well as whether their presence is required or optional. Similarly to my previous comment, I'm not sure I understand what is meant by the "type" of a member name. Section 3.3.3 Are the parentheses around "chr" in the sh-string construction doing anything? Section 3.3.5 A Byte Sequence is delimited with colons and encoded using base64 ([RFC4648], Section 4). For example: Thank you for the section reference to disambiguate base64 and base64url! Section 4 This section defines how to serialize and parse Structured Fields in field values, and protocols compatible with them (e.g., in HTTP/2 [RFC7540] before HPACK [RFC7541] is applied). nit: I'm not sure I'm parsing this sentence correctly: what does "protocols compatible with them" bind to -- is it part of what "this section defines"? (I don't actually see any text anywhere in this document that I would consider to be described by "protocols compatible with them".) Section 4.1 It's interesting to note that some of the subsections treat "input item of wrong type" as an explicit failure case (e.g., 4.1.3.1) whereas others implicitly assume that the input is one of the appropriate types (e.g., 4.1.1). Given a structure defined in this specification, return an ASCII string suitable for use in a HTTP field value. nit: I would have expected wording like "the following procedure returns" or "return [...] value as follows" or similar; the current sentence is an imperative that does not indicate how to fulfil it. (The same comment applies to basically all of the subsections, and a similar one to § 4.2 and its subsections.) 6. Return output_string converted into an array of bytes, using ASCII encoding [RFC0020]. This implicitly assumes that output_string contains only characters representable in ASCII. I believe this is currently true based on the relevant ABNF constructions and serialization procedures, but it still feels like a needless dangling edge case. Section 4.1.2 Is the nesting level correct for these (sub)procedures? It seems like top-level steps 3, 4, and 5 are logically children of step 2. Section 4.1.6 3. Let output be an empty string. 4. Append DQUOTE to output. Can't we consolidate steps 3 and 4 (as is done in § 4.1.1.1 where output is initialized to "("? Section 4.1.8 1. If input_bytes is not a sequence of bytes, fail serialization. side note: perhaps this is just my roots as a C programmer showing through, but how could you end up with something that's not a sequence of bytes? :) Section 4.2 Strings split across multiple field lines will have unpredictable results, because comma(s) and whitespace inserted upon combination will become part of the string output by the parser. Since concatenation might be done by an upstream intermediary, the results are not under the control of the serializer or the parser. This seems to have the implication that the results are unpredictable even if a serializer and parser collaborate to use a procedure that, in disregard of this specification, splits individual list and/or dictionary entries across multiple field lines, due to the potential for an intermediary that is not complicit in the deviation from the spec. In some sense, that might be the key implication of this statement, in which case it's surprising to not see it spelled out more clearly. Section 4.2.1.2 3. While input_string is not empty: 1. Discard any leading SP characters from input_string. 2. If the first character of input_string is ")": Don't we need to check if the input_string is empty again after consuming leading SP but before attempting to consume anything else? Section 4.2.2 Given an ASCII string as input_string, return an ordered map whose values are (item_or_inner_list, parameters) tuples. input_string is Should we say anything about the map keys? Section 4.2.3.2 Why do we use a different procedure to implement the "implicit true" property of booleans than we did in Section 4.2.2? Section 4.2.4 4. Otherwise, prepend char to input_string, and exit the loop. This is the only place in the document where we use "prepend" in an algorithm. That might make it surprising to the reader; is it easy to reformulate this without greedily consuming input that does not match? 2. If output_number is outside the range -999,999,999,999,999 to 999,999,999,999,999 inclusive, fail parsing. [I'm not sure how this check could trigger given the length check in 7.5] Section 4.2.7 Because some implementations of base64 do not allow reject of encoded data that is not properly "=" padded (see [RFC4648], Section 3.2), parsers SHOULD NOT fail when it is not present, unless they cannot be configured to do so. This is a new protocol mechanism; why do we need to be so accommodating to inflexible implementations? (Also, nit: "rejection") Because some implementations of base64 do not allow rejection of encoded data that has non-zero pad bits (see [RFC4648], Section 3.5), parsers SHOULD NOT fail when it is present, unless they cannot be configured to do so. (ibid) Also, nit: singular/plural mismatch "bits"/"it is" Section 6 It seems worth mentioning the handling for duplicated key names (e.g., in parameters and dictionaries) w.r.t. overwrite or must-be-unique, and how there have been previous vulnerabilities relating to different implementations choosing "first one wins" vs. "last one wins". Appendix B Implementers should note that Dictionaries and Parameters are order- preserving maps. Some fields may not convey meaning in the ordering of these data types, but it should still be exposed so that applications which need to use it will have it available. This far through the document I still have no idea when the order might actually be useful; even this text is only noting that (at least sometimes) the order does not convey meaning. |
2020-05-18
|
18 | Benjamin Kaduk | [Ballot Position Update] New position, Discuss, has been recorded for Benjamin Kaduk |
2020-05-18
|
18 | Alissa Cooper | [Ballot comment] Per the Gen-ART review, it seems like at a minimum the options available for integers larger than 10^15 should be noted somewhere so … [Ballot comment] Per the Gen-ART review, it seems like at a minimum the options available for integers larger than 10^15 should be noted somewhere so that readers are alert to it, even if no particular option is recommended. |
2020-05-18
|
18 | Alissa Cooper | [Ballot Position Update] New position, No Objection, has been recorded for Alissa Cooper |
2020-05-17
|
18 | Erik Kline | [Ballot comment] Overall, several questions I had while reading the first time were answered, either directly or implicitly, by text that followed. [[ questions ]] … [Ballot comment] Overall, several questions I had while reading the first time were answered, either directly or implicitly, by text that followed. [[ questions ]] * It's documented as possible for field definitions to place constraints on cardinality; what about constraints on order as well in certain situations? This came to mind again when I got to section 3.2 and read that index-based access was required for dictionaries. Is it possible for a field definition to place requirements on the order of things in a dictionary? The phrase "ordered " appears repeatedly, and Appendix B has important notes about order-preserving structures. Did I perhaps miss some text early on about this, or should/could this be highlighted in non-appendix text? * [ section 4.1.2 ] Should items 3, 3.1, .. 5.2 be indented and renumbered under 2 after 2.1? * [ section 4.1.8 ] Just to confirm: does serializing an empty byte sequence result in ::? (assuming a context where the entire structured field would not otherwise have been left unserialized) My reading of 4.2.7 is that :: would parse correctly as a 0-length byte sequence. [[ random ]] * The named ABNF productions are all sh-*, which I assume is for "structured header". I assume it's too late at this point, but sf-* for "structured field" seemed like a logical choice to me. Not the least bit important, though! |
2020-05-17
|
18 | Erik Kline | [Ballot Position Update] New position, No Objection, has been recorded for Erik Kline |
2020-05-17
|
18 | Martin Duke | [Ballot discuss] This is probably a simple one, and perhaps I'm missing something obvious: Throughout Section 3, the document specifies minimum data structure sizes (1024 … [Ballot discuss] This is probably a simple one, and perhaps I'm missing something obvious: Throughout Section 3, the document specifies minimum data structure sizes (1024 list members, 256 inner list members, 64-character keys, etc.) that the receiver MUST be able to process. What is the desired behavior if any of these data structures exceeds what the receiver can process? Must it skip the entire field, or can it process the first N entries and then ignore the rest? Given the "Intentionally Strict Processing" principle, it would be good to spell this out. |
2020-05-17
|
18 | Martin Duke | [Ballot comment] Thanks for this noble attempt to tame the wildness that is the HTTP spec! Comments: - While this is by no means a … [Ballot comment] Thanks for this noble attempt to tame the wildness that is the HTTP spec! Comments: - While this is by no means a required change to publish this document, I found the order of Section 3 to be backwards from what would easiest to follow. The higher-order concepts (e.g. lists) are defined first, and refer to low-level concepts (like items) that are not defined till the end of the section. Nits: - In Sec 3.1.2, it might be useful to explain that in example-IntHeader, a is TRUE. - sec 3.2. Can you add some text to make it clear that the value in dictionary entries is only optional (in brackets) because of Boolean TRUE? This was not clear to me until I read sec. 4.1.2. - Sec 4. s/before HPACK is applied/before compression with HPACK (A receiver "applies" HPACK to decompress, and presumably before doing this parsing) - Sec 4.2. s/header value/field value |
2020-05-17
|
18 | Martin Duke | [Ballot Position Update] New position, Discuss, has been recorded for Martin Duke |
2020-05-04
|
18 | David Schinazi | Request for Last Call review by GENART Completed: Ready with Nits. Reviewer: David Schinazi. Sent review to list. |
2020-05-04
|
18 | Amy Vezza | Placed on agenda for telechat - 2020-05-21 |
2020-05-04
|
18 | Barry Leiba | Ballot has been issued |
2020-05-04
|
18 | Barry Leiba | [Ballot Position Update] New position, Yes, has been recorded for Barry Leiba |
2020-05-04
|
18 | Barry Leiba | Created "Approve" ballot |
2020-05-04
|
18 | Barry Leiba | IESG state changed to IESG Evaluation from Waiting for AD Go-Ahead |
2020-05-04
|
18 | Gunter Van de Velde | Closed request for Last Call review by OPSDIR with state 'Overtaken by Events' |
2020-05-04
|
18 | (System) | IESG state changed to Waiting for AD Go-Ahead from In Last Call |
2020-04-27
|
18 | (System) | IANA Review state changed to IANA OK - No Actions Needed from IANA - Review Needed |
2020-04-27
|
18 | Sabrina Tanamal | (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: The IANA Functions Operator has reviewed draft-ietf-httpbis-header-structure-18, which is currently in Last Call, and has the following comments: We … (Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs: The IANA Functions Operator has reviewed draft-ietf-httpbis-header-structure-18, which is currently in Last Call, and has the following comments: We understand that this document doesn't require any registry actions. While it's often helpful for a document's IANA Considerations section to remain in place upon publication even if there are no actions, if the authors strongly prefer to remove it, we do not object. If this assessment is not accurate, please respond as soon as possible. Thank you, Sabrina Tanamal Senior IANA Services Specialist |
2020-04-23
|
18 | Jean Mahoney | Request for Last Call review by GENART is assigned to David Schinazi |
2020-04-23
|
18 | Jean Mahoney | Request for Last Call review by GENART is assigned to David Schinazi |
2020-04-23
|
18 | Tero Kivinen | Request for Last Call review by SECDIR is assigned to Stefan Santesson |
2020-04-23
|
18 | Tero Kivinen | Request for Last Call review by SECDIR is assigned to Stefan Santesson |
2020-04-21
|
18 | Tim Chown | Assignment of request for Last Call review by OPSDIR to Tim Chown was rejected |
2020-04-21
|
18 | Gunter Van de Velde | Request for Last Call review by OPSDIR is assigned to Tim Chown |
2020-04-21
|
18 | Gunter Van de Velde | Request for Last Call review by OPSDIR is assigned to Tim Chown |
2020-04-20
|
18 | Amy Vezza | IANA Review state changed to IANA - Review Needed |
2020-04-20
|
18 | Amy Vezza | The following Last Call announcement was sent out (ends 2020-05-04): From: The IESG To: IETF-Announce CC: ietf-http-wg@w3.org, httpbis-chairs@ietf.org, barryleiba@gmail.com, tpauly@apple.com, draft-ietf-httpbis-header-structure@ietf.org … The following Last Call announcement was sent out (ends 2020-05-04): From: The IESG To: IETF-Announce CC: ietf-http-wg@w3.org, httpbis-chairs@ietf.org, barryleiba@gmail.com, tpauly@apple.com, draft-ietf-httpbis-header-structure@ietf.org, Tommy Pauly Reply-To: last-call@ietf.org Sender: Subject: Last Call: (Structured Field Values for HTTP) to Proposed Standard The IESG has received a request from the HTTP WG (httpbis) to consider the following document: - 'Structured Field Values for HTTP' as Proposed Standard The IESG plans to make a decision in the next few weeks, and solicits final comments on this action. Please send substantive comments to the last-call@ietf.org mailing lists by 2020-05-04. Exceptionally, comments may be sent to iesg@ietf.org instead. In either case, please retain the beginning of the Subject line to allow automated sorting. Abstract This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values. The file can be obtained via https://datatracker.ietf.org/doc/draft-ietf-httpbis-header-structure/ IESG discussion can be tracked via https://datatracker.ietf.org/doc/draft-ietf-httpbis-header-structure/ballot/ No IPR declarations have been submitted directly on this I-D. |
2020-04-20
|
18 | Amy Vezza | IESG state changed to In Last Call from Last Call Requested |
2020-04-20
|
18 | Barry Leiba | Last call was requested |
2020-04-20
|
18 | Barry Leiba | Last call announcement was generated |
2020-04-20
|
18 | Barry Leiba | Ballot approval text was generated |
2020-04-20
|
18 | Barry Leiba | IESG state changed to Last Call Requested from AD Evaluation::AD Followup |
2020-04-19
|
18 | (System) | Sub state has been changed to AD Followup from Revised ID Needed |
2020-04-19
|
18 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-18.txt |
2020-04-19
|
18 | (System) | New version approved |
2020-04-19
|
18 | (System) | Request for posting confirmation emailed to previous authors: Mark Nottingham , Poul-Henning Kamp |
2020-04-19
|
18 | Mark Nottingham | Uploaded new revision |
2020-04-19
|
18 | Mark Nottingham | Uploaded new revision |
2020-04-12
|
17 | Barry Leiba | IESG state changed to AD Evaluation::Revised I-D Needed from AD Evaluation |
2020-04-12
|
17 | Barry Leiba | Ballot writeup was changed |
2020-04-12
|
17 | Barry Leiba | IESG state changed to AD Evaluation from Publication Requested |
2020-04-08
|
17 | Tommy Pauly | # Shepherd Writeup for draft-ietf-httpbis-header-structure ## 1. Summary Tommy Pauly is the document shepherd. Barry Leiba is the responsible Area Director. This document defines a … # Shepherd Writeup for draft-ietf-httpbis-header-structure ## 1. Summary Tommy Pauly is the document shepherd. Barry Leiba is the responsible Area Director. This document defines a standard set of data types for HTTP headers and trailers, with detailed algorithms for how to serialize and parse these fields. This set of strictly-typed fields is referred to as "Structured Fields". These definitions do not apply retroactively to any existing header fields, but allow future headers to improve interoperability and consistency. Several in-progress documents rely on the format defined in Structured Fields. ## 2. Review and Consensus This document has been an active area of discussion in the working group for over three years during its development. Many members of the working group have engaged in reviews and discussions on the mailing list, particularly due to the wide applicability of the structured field definitions that the document establishes. Several details required taking consensus calls in the past year (such as the handling of empty lists and URLs). These generated lively discussion, which did converge and reach consensus. The working group last call was a relatively long call, about one month, during which time many detailed reviews were provided. All review comments have been incorporated. ## 3. Intellectual Property The authors have confirmed that to their direct, personal knowledge, all IPR related to this document has already been disclosed. There are no IPR disclosures on the document. ## 4. Other This document has no downrefs or IANA considerations. |
2020-04-08
|
17 | Tommy Pauly | Responsible AD changed to Barry Leiba |
2020-04-08
|
17 | Tommy Pauly | IETF WG state changed to Submitted to IESG for Publication from WG Consensus: Waiting for Write-Up |
2020-04-08
|
17 | Tommy Pauly | IESG state changed to Publication Requested from I-D Exists |
2020-04-08
|
17 | Tommy Pauly | IESG process started in state Publication Requested |
2020-04-08
|
17 | Tommy Pauly | Changed consensus to Yes from Unknown |
2020-04-08
|
17 | Tommy Pauly | Intended Status changed to Proposed Standard from None |
2020-04-08
|
17 | Tommy Pauly | Notification list changed to Tommy Pauly <tpauly@apple.com> from Patrick McManus <mcmanus@ducksong.com>, Tommy Pauly <tpauly@apple.com> |
2020-04-08
|
17 | Tommy Pauly | # Shepherd Writeup for draft-ietf-httpbis-header-structure ## 1. Summary Tommy Pauly is the document shepherd. Barry Leiba is the responsible Area Director. This document defines a … # Shepherd Writeup for draft-ietf-httpbis-header-structure ## 1. Summary Tommy Pauly is the document shepherd. Barry Leiba is the responsible Area Director. This document defines a standard set of data types for HTTP headers and trailers, with detailed algorithms for how to serialize and parse these fields. This set of strictly-typed fields is referred to as "Structured Fields". These definitions do not apply retroactively to any existing header fields, but allow future headers to improve interoperability and consistency. Several in-progress documents rely on the format defined in Structured Fields. ## 2. Review and Consensus This document has been an active area of discussion in the working group for over three years during its development. Many members of the working group have engaged in reviews and discussions on the mailing list, particularly due to the wide applicability of the structured field definitions that the document establishes. Several details required taking consensus calls in the past year (such as the handling of empty lists and URLs). These generated lively discussion, which did converge and reach consensus. The working group last call was a relatively long call, about one month, during which time many detailed reviews were provided. All review comments have been incorporated. ## 3. Intellectual Property The authors have confirmed that to their direct, personal knowledge, all IPR related to this document has already been disclosed. There are no IPR disclosures on the document. ## 4. Other This document has no downrefs or IANA considerations. |
2020-03-24
|
17 | Tommy Pauly | IETF WG state changed to WG Consensus: Waiting for Write-Up from WG Document |
2020-03-24
|
17 | Tommy Pauly | Notification list changed to Patrick McManus <mcmanus@ducksong.com>, Tommy Pauly <tpauly@apple.com> from Patrick McManus <mcmanus@ducksong.com> |
2020-03-24
|
17 | Tommy Pauly | Document shepherd changed to Tommy Pauly |
2020-03-15
|
17 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-17.txt |
2020-03-15
|
17 | (System) | New version approved |
2020-03-15
|
17 | (System) | Request for posting confirmation emailed to previous authors: Mark Nottingham , Poul-Henning Kamp |
2020-03-15
|
17 | Mark Nottingham | Uploaded new revision |
2020-03-15
|
17 | Mark Nottingham | Uploaded new revision |
2020-03-09
|
16 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-16.txt |
2020-03-09
|
16 | (System) | New version approved |
2020-03-09
|
16 | (System) | Request for posting confirmation emailed to previous authors: Mark Nottingham , Poul-Henning Kamp |
2020-03-09
|
16 | Mark Nottingham | Uploaded new revision |
2020-03-09
|
16 | Mark Nottingham | Uploaded new revision |
2020-03-09
|
15 | Henrik Levkowetz | Corrected the rev number. |
2020-01-29
|
15 | Tommy Pauly | IETF WG state changed to In WG Last Call from WG Document |
2020-01-28
|
15 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-15.txt |
2020-01-28
|
15 | (System) | New version approved |
2020-01-28
|
15 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2020-01-28
|
15 | Mark Nottingham | Uploaded new revision |
2020-01-28
|
15 | Mark Nottingham | Uploaded new revision |
2019-10-31
|
14 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-14.txt |
2019-10-31
|
14 | (System) | New version approved |
2019-10-31
|
14 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2019-10-31
|
14 | Mark Nottingham | Uploaded new revision |
2019-10-31
|
14 | Mark Nottingham | Uploaded new revision |
2019-08-25
|
13 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-13.txt |
2019-08-25
|
13 | (System) | New version approved |
2019-08-25
|
13 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2019-08-25
|
13 | Mark Nottingham | Uploaded new revision |
2019-08-25
|
13 | Mark Nottingham | Uploaded new revision |
2019-08-20
|
12 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-12.txt |
2019-08-20
|
12 | (System) | New version approved |
2019-08-20
|
12 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2019-08-20
|
12 | Mark Nottingham | Uploaded new revision |
2019-08-20
|
12 | Mark Nottingham | Uploaded new revision |
2019-07-08
|
11 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-11.txt |
2019-07-08
|
11 | (System) | New version approved |
2019-07-08
|
11 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2019-07-08
|
11 | Mark Nottingham | Uploaded new revision |
2019-07-08
|
11 | Mark Nottingham | Uploaded new revision |
2019-04-17
|
10 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-10.txt |
2019-04-17
|
10 | (System) | New version approved |
2019-04-17
|
10 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2019-04-17
|
10 | Mark Nottingham | Uploaded new revision |
2019-04-17
|
10 | Mark Nottingham | Uploaded new revision |
2018-12-01
|
09 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-09.txt |
2018-12-01
|
09 | (System) | New version approved |
2018-12-01
|
09 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2018-12-01
|
09 | Mark Nottingham | Uploaded new revision |
2018-12-01
|
09 | Mark Nottingham | Uploaded new revision |
2018-10-23
|
08 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-08.txt |
2018-10-23
|
08 | (System) | New version approved |
2018-10-23
|
08 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2018-10-23
|
08 | Mark Nottingham | Uploaded new revision |
2018-10-23
|
08 | Mark Nottingham | Uploaded new revision |
2018-07-02
|
07 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-07.txt |
2018-07-02
|
07 | (System) | New version approved |
2018-07-02
|
07 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2018-07-02
|
07 | Mark Nottingham | Uploaded new revision |
2018-07-02
|
07 | Mark Nottingham | Uploaded new revision |
2018-06-05
|
06 | Mark Nottingham | This document now replaces draft-ietf-httpbis-jfv, draft-kamp-httpbis-structure, draft-nottingham-structured-headers instead of draft-ietf-httpbis-jfv, draft-nottingham-structured-headers |
2018-06-05
|
06 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-06.txt |
2018-06-05
|
06 | (System) | New version approved |
2018-06-05
|
06 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2018-06-05
|
06 | Mark Nottingham | Uploaded new revision |
2018-06-05
|
06 | Mark Nottingham | Uploaded new revision |
2018-05-30
|
05 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-05.txt |
2018-05-30
|
05 | (System) | New version approved |
2018-05-30
|
05 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2018-05-30
|
05 | Mark Nottingham | Uploaded new revision |
2018-05-30
|
05 | Mark Nottingham | Uploaded new revision |
2018-03-14
|
04 | Mark Nottingham | This document now replaces draft-ietf-httpbis-jfv, draft-nottingham-structured-headers instead of draft-ietf-httpbis-jfv |
2018-03-05
|
04 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-04.txt |
2018-03-05
|
04 | (System) | New version approved |
2018-03-05
|
04 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2018-03-05
|
04 | Mark Nottingham | Uploaded new revision |
2018-03-05
|
04 | Mark Nottingham | Uploaded new revision |
2018-02-01
|
03 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-03.txt |
2018-02-01
|
03 | (System) | New version approved |
2018-02-01
|
03 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp , Mark Nottingham |
2018-02-01
|
03 | Mark Nottingham | Uploaded new revision |
2018-02-01
|
03 | Mark Nottingham | Uploaded new revision |
2017-11-27
|
02 | Mark Nottingham | Notification list changed to Patrick McManus <mcmanus@ducksong.com> |
2017-11-27
|
02 | Mark Nottingham | Document shepherd changed to Patrick McManus |
2017-11-26
|
02 | Mark Nottingham | New version available: draft-ietf-httpbis-header-structure-02.txt |
2017-11-26
|
02 | (System) | New version approved |
2017-11-26
|
02 | (System) | Request for posting confirmation emailed to previous authors: httpbis-chairs@ietf.org, Poul-Henning Kamp |
2017-11-26
|
02 | Mark Nottingham | Uploaded new revision |
2017-10-27
|
01 | (System) | Document has expired |
2017-04-25
|
01 | Poul-Henning Kamp | New version available: draft-ietf-httpbis-header-structure-01.txt |
2017-04-25
|
01 | (System) | New version approved |
2017-04-25
|
01 | (System) | Request for posting confirmation emailed to previous authors: Poul-Henning Kamp |
2017-04-25
|
01 | Poul-Henning Kamp | Uploaded new revision |
2017-03-21
|
00 | Patrick McManus | Added to session: IETF-98: httpbis Fri-0900 |
2016-12-12
|
00 | Mark Nottingham | This document now replaces draft-ietf-httpbis-jfv instead of None |
2016-12-12
|
00 | Poul-Henning Kamp | New version available: draft-ietf-httpbis-header-structure-00.txt |
2016-12-12
|
00 | (System) | WG -00 approved |
2016-12-10
|
00 | Poul-Henning Kamp | Set submitter to "Poul-Henning Kamp ", replaces to (none) and sent approval email to group chairs: httpbis-chairs@ietf.org |
2016-12-10
|
00 | Poul-Henning Kamp | Uploaded new revision |