Until now my php application assumed HTTP 1.1 everywhere. So I defined all headers like so:
header("HTTP/1.1 500 Internal Server Error");
But now my server also supports HTTP 2 and I want to update all header responses with the right HTTP status code.
How to I get the HTTP Protocol version of the http request?
(My webserver is nginx, but I guess it is irrelevant if I am using nginx or apache.)
As opposed to HTTP/1.1, which keeps all requests and responses in plain text format, HTTP/2 uses the binary framing layer to encapsulate all messages in binary format, while still maintaining HTTP semantics, such as verbs, methods, and headers.
You can just check it in: Chrome Dev Tool ( F12 ) → Network → Protocol. It will tell you the protocol used and the domain of each transfer.
HTTP2 is much faster and more reliable than HTTP1. HTTP1 loads a single request for every TCP connection, while HTTP2 avoids network delay by using multiplexing. HTTP is a network delay sensitive protocol in the sense that if there is less network delay, then the page loads faster.
These are the high-level differences between HTTP1 and HTTP2: HTTP2 is binary, instead of textual. HTTP2 is fully multiplexed, instead of ordered and blocking. HTTP2 can, therefore, use one connection for parallelism.
The server protocol should be available through SERVER_PROTOCOL
from the server environment, usually exposed through $_SERVER['SERVER_PROTOCOL']
inside your application.
From phpinfo()
under Apache 2.4:
SERVER_PROTOCOL => HTTP/1.1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With