用bcb编写cgi程序

jingrunx 2002-03-13 03:13:00
我做了一个cgi类型地web services程序,希望加入认证,我是这样做的:
void __fastcall TWebModule2::WebModuleDefaultHandlerAction(TObject *Sender,
TWebRequest *Request, TWebResponse *Response, bool &Handled)
if(Request->Authorization.IsEmpty()) {
Response->Realm = "Please enter your name & pass:";
Response->WWWAuthenticate = "Basic Realm=\"" + Response->Realm + '\"';
Response->StatusCode = 401;

const char* cgirequests[] = {
"REQUEST_METHOD",
"SERVER_PROTOCOL",
"URL",
"QUERY_STRING",
"PATH_INFO",
"PATH_TRANSLATED",
"HTTP_CACHE_CONTROL",
"HTTP_DATE",
"HTTP_ACCEPT",
"HTTP_FROM",
"HTTP_HOST",
"HTTP_IF_MODIFIED_SINCE",
"HTTP_REFERER",
"HTTP_USER_AGENT",
"HTTP_CONTENT_ENCODING",
"HTTP_CONTENT_TYPE",
"HTTP_CONTENT_LENGTH",
"HTTP_CONTENT_VERSION",
"HTTP_DERIVED_FROM",
"HTTP_EXPIRES",
"HTTP_TITLE",
"REMOTE_ADDR",
"REMOTE_HOST",
"SCRIPT_NAME",
"SERVER_PORT",
"HTTP_CONNECTION",
"HTTP_COOKIE",
"HTTP_AUTHORIZATION"
};
char tmpstr[256];

sPointer<TStringStream> stream(new TStringStream(""));
stream->WriteString("<table border=\"1\\ cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" width=\"100%\" >\r\n");
stream->WriteString("<tr><th>param</th><th>value</th></tr>\r\n");
for(int i=0; i<sizeof(cgirequests)/sizeof(cgirequests[0]); i++) {
sprintf(tmpstr, "<tr><td>%s</td><td>%s</td></tr>\r\n",
cgirequests[i], getenv(cgirequests[i]));
stream->WriteString(tmpstr);
}
stream->WriteString("</table>\r\n");
Response->Content = stream->DataString;
} else {
WSDLHTMLPublish1->ServiceInfo(Sender, Request, Response, Handled);
}


但是我发现web服务器压根就没有把HTTP_AUTHORIZATION的数据填进去,我用sniffer监控http header,发现有authorization:zffeiji,我该怎么办?
...全文
59 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

552

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧