I am sending X-Auth-HMAC
header from Java using HttpClient to Nginx PHP-FPM combo:
HttpClient
.newBuilder()
.build()
.sendAsync(
HttpRequest.newBuilder()
.uri("php-fpm:80")
.header("Content-Type", "application/json")
.header("X-Auth-HMAC", "test_hmac_header")
.POST(HttpRequest.BodyPublishers.ofString("test_body"))
.build(),
HttpResponse.BodyHandlers.ofString()
);
But on PHP side in $_SERVER
variable among all headers i get:
...
"HTTP_X_AUTH_HMAC":"test_hmac_header",
...
How could X-Auth-HMAC
become HTTP_X_AUTH_HMAC
?
CodePudding user response:
PHP formats HTTP headers in the $_SERVER
variable according to RFC 3875 (the CGI 1.1 spec).
Specifically section 4.1.18:
Meta-variables with names beginning with HTTP_ contain values read from the client request header fields, if the protocol used is HTTP. The HTTP header field name is converted to upper case, has all occurrences of - replaced with _ and has HTTP_ prepended to give the meta-variable name.
Take a loot at this answer for more discussion and alternate methods of getting HTTP headers: How do I read any request header in PHP