我正在X-Auth-HMAC使用 HttpClient 從 Java 向 Nginx PHP-FPM 組合發送標頭:
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()
);
但是在 PHP 端$_SERVER的所有標頭中的變數中,我得到:
...
"HTTP_X_AUTH_HMAC":"test_hmac_header",
...
怎么會X-Auth-HMAC變成HTTP_X_AUTH_HMAC?
uj5u.com熱心網友回復:
PHP$_SERVER根據RFC 3875(CGI 1.1 規范)在變數中格式化 HTTP 標頭。
特別是第 4.1.18 節:
如果使用的協議是 HTTP,則名稱以 HTTP_ 開頭的元變數包含從客戶端請求標頭欄位讀取的值。HTTP 標頭欄位名稱被轉換為大寫,所有出現的 - 都替換為 _ 并且在 HTTP_ 前面加上了元變數名稱。
請查看此答案以獲取更多討論和獲取 HTTP 標頭的替代方法:How do I read any request header in PHP
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/357693.html
