Apache 使用 mod_fcgid 抓不到 header

2018-02-06 Apache

前陣子在更換線上的 Apache + PHP template 的時候遇到某一個專案出現取不到 header 的問題,安裝方式是參考之前實作的「Ubuntu 16.04 安裝 Apache2 + mod_fcgid + mpm_worker 跑 php 7.x

 

一般性的 Header 例如 remote_addr 都很正常,但是發現有一些自定義的 Header 沒有辦法拋到後端 PHP …

 

這個問題一直拖到最近快要檢討的時候抓出來看 … 重新去看了 Apache 的 mod_fcgid 文件後才突破盲點

 

在這個案子要請求的是 Authorization header,這算是很正常的 header,不過在很多的情況下會把 Authorization 這個 header 當成特殊狀況,可能是因為 Authorization 較為敏感

 

而在 mod_fcgid 這邊有提到如果要特別 request header 給後端的話需要使用 FcgidPassHeader 這個參數 (default: none)

 

文中有特別提到 Authorization 要用 FcgidPassHeader 特別處理

Note
Most request headers are already available to the application as environment variables, and generally are prefixed with HTTP_. (Notable exceptions are Content-type and Content-length, which do not have the HTTP_ prefix.) Thus, this directive is only required for request headers that are purposefully omitted, such as Authorization and Proxy-Authorization. Only pass these request headers if absolutely required.

 

這邊示範在 Apache 的 mod_fcgid 加上 FcgidPassHeader 的方式:

 

然後 reload Apache,即可抓到 Authorization header

 

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

彙整

分類

open all | close all

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱

%d 位部落客按了讚: