'What a connect message header should look like in http2?

I found that a get message header looks like:

:method: GET
:scheme: https
:authority: server.net
:path: /config
accept: */*
accept-encoding: gzip,deflate

What a connect message header should look like?

This example is from the RFC of http2:

GET /resource HTTP/1.1           HEADERS
     Host: example.org          ==>     + END_STREAM
     Accept: image/jpeg                 + END_HEADERS
                                          :method = GET
                                          :scheme = https
                                          :path = /resource
                                          host = example.org
                                          accept = image/jpeg

I want to know the equivalent of the connect header in http2. In Http1 is:

CONNECT example.org:443 HTTP/1.1
Host: example.org:443


Solution 1:[1]

The format of the CONNECT method in HTTP/2 is specified in section 8.3.

With the formatting you used above looks like:

:method: CONNECT
:authority: proxy.net:8080

As specified, :scheme and :path must be omitted.

The HTTP/2 CONNECT method can also be used for bootstrapping other protocols (see for example WebSocket over HTTP/2), so that, additionally, the :protocol pseudo-header may also be present.

Remember however that this is only a textual representation of HTTP/2; the bytes that actually travel over the network are different since you must encode them using HPACK.

Unless you are actually writing an HTTP/2 implementation, it is better that you use existing libraries (available in virtually any programming language) to send HTTP/2 requests (of any kind): the libraries will take care of converting your CONNECT request into the proper bytes to send over the network.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 sbordet