Skip to content

Header Validations #800

Open
Open

Description

@guybedford

Some questions with regards to header validations:

  • Valid headers keys must not include whitespace
  • Valid header values must have whitespace trimmed

Possible clarifications that therefore might be made:

Keys

Values

  • Could clarify that they are always trimmed by \t, , \r\ and \n
  • Could clarify that they contain no inner \0, \r or \n.

Without the above assumptions, returning values to the user risks returning invalid values from a get() or entries() call, making any fetch-based Headers implementation on top of these primitives non-standard.

Activity

  1. changed the title [-]Can it be assumed that field keys have whitespace trimmed?[/-] [+]Can it be assumed that fields have whitespace trimmed?[/+] on Aug 2, 2024
  2. changed the title [-]Can it be assumed that fields have whitespace trimmed?[/-] [+]Header Validations[/+] on Aug 2, 2024
  3. guybedford commented on Aug 2, 2024

    @guybedford
    ContributorAuthor

    I've updated the description here to separately consider keys and values.

  4. lukewagner commented on Aug 12, 2024

    @lukewagner
    Member

    Good point, I think we do need to tighten this up in the prose wording. I think the appropriate rule is that any field-key parameter (which we need to rename to field-name: WebAssembly/wasi-http#107) in wasi-http needs to be validated to match the field-name grammar in RFC 9110 (which ends up disallowing whitespace, to your point) and, similarly, any field-value parameter in wasi-http must match the field-value grammar in RFC 9110 (which ends up requiring the trimming), with a failure to match returning invalid-syntax.

  5. added
    S-inactiveStatus: no discussion in over a year. Records silence during triage; not a proposal to close.
    on Aug 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P-httpProposal: wasi-httpS-inactiveStatus: no discussion in over a year. Records silence during triage; not a proposal to close.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions