FastCGI+lighttpd+C++:如何在代码中访问 HTTP headers?

FastCGI+lighttpd+C++: How can I access the HTTP headers in code?

我正在 C/C++ 中通过 FastCGI 开发 RESTFul API,在嵌入式系统中部署 Lighttpd。我想使用基本授权。官方的做法是在lighttpd.conf中配置包含usr+password.

的文件

但是我的嵌入式系统有自己的用户管理系统,很难合并前面提到的静态用户+密码机制。所以我想知道我的代码中是否可以像"Authorization: Basic SGVsbWVyxxxxxx3b3JkMDE="那样访问HTTPHeader,自己做user+pass的验证。

问题:我发现我可以通过调用 getenv() 获取 "CONTENT_LENGTH""REQUEST_URI""REQUEST_METHOD" 等的 headers 信息,但是"Authorization" 没有环境变量。我怎样才能在我的代码中得到这个 HTTP header

谢谢, 艾萨克·王

你可以使用 lighttpd mod_fastcgi 和 FastCGI "mode" => "authorizer"

https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModFastCGI

当 FastCGI "mode" => "responder"(默认)时,lighttpd 不通过授权 header。

.

以下是错误的:

The official approach is to configure it in lighttpd.conf with files that contains usr+password.

这是不正确的。 lighttpd 支持除文件之外的多个身份验证选项,例如 GSSAPI、LDAP、MySQL、PAM 和 SASL,如果您想编写自定义 mod_authn_* 模块,lighttpd 有一个可重用的框架。

https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModAuth