-
Notifications
You must be signed in to change notification settings - Fork 655
Protocol Support
github-actions[bot] edited this page Jul 22, 2026
·
4 revisions
A feature-by-feature snapshot of what Titanium Web Proxy actually implements for HTTP/1.0, HTTP/1.1, and HTTP/2, so you can tell at a glance whether something you depend on is fully supported, relayed best-effort, or not implemented yet. "Yes" means the proxy actively parses/enforces the feature (and you can observe/modify it via the public API where relevant); "Partial" means it works for the common case but has a known gap; "No" means it isn't implemented.
This table reflects the develop branch as of the HTTP/1.x gap-closure work (chunked trailers, interim 1xx
responses, and TLS body-write-hook parity). If you find something inaccurate, please open an issue.
| Feature | HTTP/1.0 | HTTP/1.1 | HTTP/2 | Notes |
|---|---|---|---|---|
| Persistent connections / keep-alive | Yes | Yes | Yes (inherent) |
Connection: keep-alive (1.0) / default (1.1); HTTP/2 multiplexes over one connection. |
| Chunked transfer-encoding | N/A (no chunked in 1.0) | Yes | N/A (HTTP/2 uses DATA frames, not chunking) | Read and write, both request and response, via HttpStream. |
| Chunked trailers (trailing headers) | N/A | Yes | No | See RequestResponseBase.TrailingHeaders; forwarded/emitted for HTTP/1.x. HTTP/2 trailer HEADERS frames are not yet distinguished from the main header block. |
Expect: 100-continue |
Yes | Yes | N/A (no equivalent frame flow) |
ProxyServer.Enable100ContinueBehaviour. |
| Other 1xx interim responses (e.g. 103 Early Hints) | N/A | Yes | No | Relayed to the client and looped past on the server connection; not yet exposed as a dedicated event. HTTP/2 has no interim-response handling. |
Upgrade / WebSocket (101 Switching Protocols) |
N/A | Yes | N/A | Raw duplex relay once upgraded; see RequestHandler.HandleWebSocketUpgrade. |
CONNECT tunneling |
Yes | Yes | Yes (via ExplicitProxyEndPoint) |
Supports both decrypt-and-inspect and pass-through-as-opaque-tunnel. |
| Stream multiplexing | N/A | N/A | Yes | Concurrent streams tracked per connection in Http2Helper. |
| HPACK header compression | N/A | N/A | Partial | Decode reuses a persistent dynamic table; encode currently creates a fresh table per call, so repeated response headers aren't re-indexed on the encode side. |
Flow control (WINDOW_UPDATE) |
N/A | N/A | Partial | Frames are relayed but the proxy does no window accounting of its own. |
Server push (PUSH_PROMISE) |
N/A | N/A | Partial | Frames are byte-relayed only; not parsed/exposed (push is deprecated in browsers, so low priority). |
PING / keepalive frames |
N/A | N/A | Partial | Relayed passively; the proxy does not originate or respond to pings itself. |
SETTINGS negotiation |
N/A | N/A | Partial |
HEADER_TABLE_SIZE and MAX_FRAME_SIZE are read; other settings are relayed without being enforced. |
RST_STREAM / per-stream cancellation |
N/A | N/A | Yes | Cleans up the corresponding session and relays the frame. |
| Feature | HTTP/1.0 | HTTP/1.1 | HTTP/2 | Notes |
|---|---|---|---|---|
Buffered body read/modify (GetRequestBody/SetResponseBodyString, etc.) |
Yes | Yes | Yes | |
Per-chunk streaming hooks (OnRequestBodyWrite/OnResponseBodyWrite) - plain HTTP |
Yes | Yes | Yes | |
| Per-chunk streaming hooks - TLS-decrypted connections | Yes | Yes | Yes | Fixed for HTTP/1.x: the hook now fires with parity for SslStream-backed connections, not just plain NetworkStream. |
Synthetic streamed responses (RespondStreaming) |
Yes | Yes | Yes | Chunked or fixed-length framing chosen automatically from the response headers you set. |
| Automatic decompression for body inspection (gzip/deflate/brotli) | Yes | Yes | Yes | |
| Multipart/form-data boundary-aware streaming | Yes | Yes | N/A (not multipart-aware over h2 yet) |
| Feature | Support | Notes |
|---|---|---|
| Explicit, transparent, and SOCKS4/5 endpoints | Yes |
ExplicitProxyEndPoint, TransparentProxyEndPoint, SocksProxyEndPoint. |
| Upstream proxy chaining (HTTP/HTTPS/SOCKS) | Yes | Static, per-request (GetCustomUpStreamProxyFunc), or system-gateway detection. |
| Proxy Basic authentication | Yes |
ProxyBasicAuthenticateFunc. |
| Windows authentication (Kerberos/NTLM) to upstream servers | Yes |
EnableWinAuth. |
| Mutual TLS to upstream servers | Yes |
ClientCertificateSelectionCallback / ServerCertificateValidationCallback. |
| Upstream connection pooling | Yes |
EnableConnectionPool (default on). |
-
Streaming Bodies - the
OnRequestBodyWrite/OnResponseBodyWrite/RespondStreamingAPIs in depth. - Home - general usage and the rest of the public API surface.