unigui的应用默认会在/server显示相关信息,unigui编译的应用能不能简单设置就可以取消/server页面?
经验证,在UniServerModule.UniGUIServerModuleHTTPCommand拦截/server就可以取消server页面:
procedure TUniServerModule.UniGUIServerModuleHTTPCommand(
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo;
var Handled: Boolean);
begin
if ARequestInfo.URI.ToLower='/server' then
begin
Handled := true;
AResponseInfo.ResponseNo:=405;
AResponseInfo.CloseConnection:=true;
AResponseInfo.ContentText :='Access denied';
AResponseInfo.CloseSession;
exit;
end;
end;
拦截处理前:
拦截处理后:
另外:可以扩展为拦截指定路径,提高服务端的安全性。
procedure TUniServerModule.UniGUIServerModuleHTTPCommand(ARequestInfo: TIdHTTPRequestInfo;
AResponseInfo: TIdHTTPResponseInfo; var Handled: Boolean);
begin
if (length(ARequestInfo.URI)>1) and //放行指定的白名单
(copy(ARequestInfo.URI.ToLower,1,4)<>'/ext') and //放行指定的白名单
(copy(ARequestInfo.URI.ToLower,1,4)<>'/uni') and //放行指定的白名单
(copy(ARequestInfo.URI.ToLower,1,7)<>'/handle') and //放行指定的白名单
(copy(ARequestInfo.URI.ToLower,1,6)<>'/cache') and //放行指定的白名单
(copy(ARequestInfo.URI.ToLower,1,2)<>'/m') then //放行指定的白名单
{
if (copy(ARequestInfo.URI.ToLower,1,7)='/server') or //拦截/server
(copy(ARequestInfo.URI.ToLower,1,2)='/ui') or //拦截/ui
(copy(ARequestInfo.URI.ToLower,1,6)='/files') or //拦截/files
(copy(ARequestInfo.URI.ToLower,1,13)='/uploadfolder') then //拦截/uploadfolder
}
begin
Handled := true;
AResponseInfo.ResponseNo:=405;
AResponseInfo.CloseConnection:=true;
AResponseInfo.ContentText :='Access denied';// '<h1>Access denied</h1>';
AResponseInfo.CloseSession;
exit;
end;
end;
标签:ToLower,unigui,ARequestInfo,URI,server,AResponseInfo,copy,78 From: https://blog.51cto.com/u_15216366/9064759