如何在Delphi WebBroker Apache模块中处理Authorization: Basic授权?
解决WebBroker Apache模块中TWebRequest未填充AuthUser/AuthPassword的问题
直接读取HTTP请求头的
Authorization字段
TWebRequest未自动解析Basic授权信息时,可通过Request.GetFieldByName('Authorization')获取完整授权头内容。典型值格式为Basic dXNlcjpwYXNzd29yZA==,空格后的Base64字符串是用户名:密码的组合。手动解码Base64凭证
提取授权头中的Base64部分,解码后分割出用户名和密码。Delphi示例代码如下:var AuthHeader, Base64Part, Credentials, Username, Password: string; ColonPos: Integer; begin AuthHeader := Request.GetFieldByName('Authorization'); if StartsText('Basic ', AuthHeader) then begin Base64Part := Copy(AuthHeader, 7, Length(AuthHeader)); Credentials := TNetEncoding.Base64.DecodeString(Base64Part); ColonPos := Pos(':', Credentials); if ColonPos > 0 then begin Username := Copy(Credentials, 1, ColonPos - 1); Password := Copy(Credentials, ColonPos + 1, Length(Credentials)); end; end; end;验证Apache配置的授权头传递
检查Apache配置文件(httpd.conf或虚拟主机配置),确保没有RequestHeader unset Authorization这类禁用授权头的配置;若使用mod_proxy等模块,需保证授权头能正确传递到WebBroker模块。
内容的提问来源于stack exchange,提问作者LTi
相关产品推荐
相关产品推荐

