Skip to content

Implement HTTP CONNECT with Hypercorn #169

@pquentin

Description

@pquentin

The urllib3 test suite includes an HTTP/1.1 proxy that supports CONNECT. This works by first establishing an HTTP connection, and then exchanging raw bytes over TCP. When porting this to Hypercorn, I realized that the ASGI protocol offers no way of exchanging raw bytes or getting access to the transport (django/asgiref#112, Kludex/uvicorn#400).

(This might not be an issue for HTTP/2 where CONNECT works with DATA frames, but h2 does not currently support CONNECT python-hyper/h2#319 anyway and outright rejects requests made by curl --proxy-http2. So let's make this issue about HTTP/1.1)

The two options are:

  • Implement absolute URI and CONNECT in Hypercorn itself
  • Give access to the transport, without any guarantees made

urllib3 currently does the latter, see urllib3@7269fd3.

Would you consider reviewing a contribution along those lines?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions