Skip to content

Better define HTTP compliance #1890

@gsnedders

Description

@gsnedders

We define:

WebDriver remote ends must provide an HTTP compliant wire protocol where the endpoints map to different commands.

Where:

To be HTTP compliant, it is supposed that the implementation supports the relevant subsets of [RFC7230], [RFC7231], [RFC7232], [RFC7234], and [RFC7235].

It is not immediately apparent what the relevant subset is.

Our definition of the Processing model includes:

The remote end is an HTTP server reading requests from the client and writing responses, typically over a TCP socket. For the purposes of this specification we model the data transmission between a particular local end and remote end with a connection to which the remote end may write bytes and read bytes. However the exact details of how this connection works and how it is established are out of scope.

And:

Read bytes from the connection until a complete HTTP request can be constructed from the data. Let request be a request constructed from the received data, according to the requirements of [RFC7230]. If it is not possible to construct a complete HTTP request, the remote end must either close the connection, return an HTTP response with status code 500, or return an error with error code unknown error.

This presumably therefore implies that the wire protocol is always HTTP/1.1 (and thus WebDriver Classic over H2 or H3 would be non-compliant, even though we otherwise only deal with HTTP messages and there is nothing per-se preventing such an implementation); we're just agnostic about the underlying transport layer protocols, similar to HTTP/1.1 itself.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions