Apache mod_fcgi помещает все клиентские http-заголовки в «FCGX_ParamArray», который вы передали в FCGX_Accept (основной цикл серверного приложения). Этот тип - просто символ ** с общим шаблоном «имя, значение, имя, ...» для строк. Итак, вам нужен такой цикл, чтобы получить их все:
std::map<std::string, std::string> hdrs;
std::string name = 0;
char* val = 0;
int i;
// "envp" is the FCGX_ParamArray you passed into FCGX_Accept(...)
for(i=0; envp[i] != NULL; i+=2) {
name = envp[i];
val = envp[i+1];
if(val != NULL) {
hdrs[name] = string(val);
}
else {
hdrs[name] = "";
}
}
Если вы используете Apache и хотите получить доступ ко всем настройкам статической конфигурации («httpd.conf»), они передаются в блок окружения «arge» main ().
int main(int argc, char** argv, char** arge) {
....
}
Имейте в виду, что не все клиенты будут отправлять все возможные заголовки - CURL, например, не отправляет заголовок "accept".