Home > database >  What a connect message header should look like in http2?
What a connect message header should look like in http2?

Time:04-05

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

CodePudding user response:

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.

  • Related