秋·风

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  278 随笔 :: 0 文章 :: 308 评论 :: 20万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

unigui的应用默认会在/server显示相关信息,unigui编译的应用不能简单设置就可以取消/server页面,经验证,在UniServerModule.UniGUIServerModuleHTTPCommand拦截/server就可以取消server页面:

1
2
3
4
5
6
7
8
9
10
11
12
13
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;
复制代码

 

posted on   秋·风  阅读(843)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示