DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: gdfhgfdh34f
今日帖子: 0
在线用户: 1
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 gxrafhp (明天会更好) ★☆☆☆☆ -
普通会员
2019/3/9 0:39:08
标题:
RemObjects 相关的问题,很着急 浏览:471
加入我的收藏
楼主: 使用remObject 做为服务端非常好用,但是通过网页比如
http://127.0.0.1:8090/ 能看到服务器暴漏的所有接口信息,能不能把页面这个屏蔽掉,客户端不影响使用
此帖子包含附件:
PNG 图像
大小:35.9K
----------------------------------------------
我爱Delphi,永远的Delphi,哪怕Delphi淘汰了,出局了,被世人淡忘了我也爱,除非我死了否则就是爱Delphi
作者:
男 dmzn (dmzn) ★☆☆☆☆ -
盒子活跃会员
2019/3/11 9:57:13
1楼: 删除项目文件(.dpr)中的两个资源文件:
1.{#ROGEN:..\Common\xxx.rodl}:自动生成res资源文件
2.{$R RODLFile.RES}: 引入资源文件.

把以上两行引用删除即可.
----------------------------------------------
生活愉快.
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲▲ -
普通会员
2019/3/11 10:20:35
2楼: 服务器控件上有属性的。
2 个属性
就是用于关闭这个的。

接下来的问题是,楼主,你买正版了吗?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wuxinxin (wuxinxin) ▲△△△△ -
注册会员
2019/5/15 4:38:37
3楼: TROServer.ServeInfoPage := False   -> 关掉 localhost:8099 页面

TROServer.ServeRodl := False ->关掉RODL
----------------------------------------------
-
作者:
男 bigboy2050 (bigboy2050) ▲▲▲▲▲ -
注册会员
2019/5/15 9:14:44
4楼: 支持楼上。。。
----------------------------------------------
http://www.kittyapp.net
作者:
男 jczxdai (草籽) ▲▲△△△ -
注册会员
2019/5/15 10:05:05
5楼: 即使关闭了,或者Encryption。通过http://127.0.0.1:8090/bin还是能看到接口信息
----------------------------------------------
草籽天涯
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲▲ -
普通会员
2019/5/15 11:50:15
6楼: 我的 无法显示。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 jczxdai (草籽) ▲▲△△△ -
注册会员
2019/5/15 16:30:49
7楼: http://127.0.0.1:8090/无法显示,http://127.0.0.1:8090/bin还会显示
----------------------------------------------
草籽天涯
作者:
男 wuxinxin (wuxinxin) ▲△△△△ -
注册会员
2019/5/16 2:06:54
8楼: http://127.0.0.1:8090/无法显示,http://127.0.0.1:8090/bin还会显示

你用的是什么版本?
----------------------------------------------
-
作者:
男 wuxinxin (wuxinxin) ▲△△△△ -
注册会员
2019/5/16 2:11:37
9楼: 9.7.0.1433 
关掉后,http://127.0.0.1:8090/bin ;是看不到信息的,只显示"Bad Reqeust"
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲▲ -
普通会员
2019/5/16 9:04:01
10楼: 我的也是两个都不显示的。
不过,我改了 服务器的 代码,自己写一个 HTML 返回
返回 欢迎信息。
方便测试 端口是不是通了。
怕 网管 封端口。
但是 bin soap 等端口 是不会显示的。
因为,他们实际上是收发 具体接口用的。
如果允许返回接口定义,使用 URL GET 才能返回信息。否则是根据你 Post 的内容返回的。
但是 我们的关闭之后,用 GET 也不返回了。

另外,我新写的服务用的是 RO 的 CodeFirst 模式,没有 RODL 文件。
这样 EXE 拿到,你也找不到接口。

但是不关设置的话。
CodeFirst 模式的编译结果。打开 URL 路径,一样能看到 RODL 的内容。动态拼的。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 jczxdai (草籽) ▲▲△△△ -
注册会员
2019/5/16 12:56:07
11楼: 原因已经查明,我使用的服务器组件是 TROIpSuperHTTPServer 才会出现关闭不掉的情况,如果使用TROIndyHTTPServer则不会显示。
----------------------------------------------
草籽天涯
作者:
男 wuxinxin (wuxinxin) ▲△△△△ -
注册会员
2019/5/16 22:09:43
12楼: 11 楼 - "原因已经查明,我使用的服务器组件是 TROIpSuperHTTPServer 才会出现关闭不掉的情况,如果使用TROIndyHTTPServer则不会显示。"

是TROLpSupperHttpServer的bug. 

在 uROBaseSuperHttpServer.pas, line 1528 处。
----------------------------------------------
-
作者:
男 wuxinxin (wuxinxin) ▲△△△△ -
注册会员
2019/5/16 22:45:09
13楼: 是TROLpSupperHttpServer的bug. 

在 uROBaseSuperHttpServer.pas, line 1528 处。

将uROBaseSuperHttpServer.pas源码 1528 -1547处改为如下即可:

 else if (Length(lRequest) = 0) then begin
          lRequestStream := TROBytesStream.Create(lRequest);
          lResponseStream := TROBytesStream.Create;
          try
          if ServeRodl then
          begin
          lTransport := TQueueItem.Create(self, aTarget, aRequestHeaders, lResponseHeaders, ldisp, lRequest);
          if IntDispatchMessage(ldisp, lTransport,  lRequestStream, lResponseStream, lIgnore) then
          lResponseHeaders.ContentType := lTransport.ContentType
          else
          WriteError(lResponseHeaders,lResponseStream,HTTP_500_code,HTTP_500_status,HTTP_500_error_invalid_path);
          end
          else
          begin
          WriteError(lResponseHeaders,lResponseStream,HTTP_500_code,HTTP_500_status,HTTP_500_error_invalid_path);
          end;

          lb := lResponseStream.Bytes;
          SetLength(lb, lResponseStream.Size);
          SendResponse(aTarget, lResponseHeaders, lb, nil, True);
          finally
          lResponseStream.ResetCapacity;
          lRequestStream.ResetCapacity;
          FreeOrDisposeOf(lResponseStream);
          FreeOrDisposeOf(lRequestStream);
          end;

          Exit;
----------------------------------------------
-
作者:
男 bigboy2050 (bigboy2050) ▲▲▲▲▲ -
注册会员
2019/5/17 9:13:20
14楼: 支持楼上,楼上是个爱钻研的人! 鉴定完毕。。。
----------------------------------------------
http://www.kittyapp.net
作者:
男 wang_80919 (Flying Wang) ▲▲▲▲▲ -
普通会员
2019/5/17 9:49:19
15楼: procedure TROBaseSuperHTTPServer.HandleRequest(aTarget: IROHTTPClientCapabilities;
  aRequestHeaders: TIPHTTPRequestHeaders; aRequest: TDynamicByteArray);
var
  lRequestStream, lResponseStream: TROBytesStream;
  ldisp: TROMessageDispatcher;
  lSubPath,
  lroot: string;
  lResponseHeaders: TIPHTTPResponseHeaders;
  lRequest, lb: TDynamicByteArray;
  info: IRONamedModuleInfo;
  lIgnore: TROResponseOptions;
  lTransport: IROHTTPTransport;
begin
  lResponseHeaders := TIPHttpResponseHeaders.Create;
  try
    SetDefaultHeaders(aTarget, lResponseHeaders);
    aTarget.AcceptEncodingModes := HTTP_DetectAcceptEncoding(aRequestHeaders.Headers.Values[id_AcceptEncoding]);
    if ([aemGZIP, aemIdentity,aemAsterisk] * aTarget.AcceptEncodingModes = []) and
       ([aemUnknown,aemCompress,aemDeflate] * aTarget.AcceptEncodingModes <> []) then begin
      intSendError(aTarget,lResponseHeaders, HTTP_406_code, HTTP_406_status, HTTP_406_error);
      Exit;
    end;
    if SameText(aRequestHeaders.Headers.Values[id_ContentEncoding],id_gzip)  then
      DoDecode(aRequest,lRequest)
    else
      lRequest:= aRequest;

    try
      lResponseHeaders.Code := HTTP_200_code;
      lResponseHeaders.Reason:= HTTP_200_status;
      lResponseHeaders.ContentType := id_ContentType_text_html;
      lResponseHeaders.Headers.Values[id_AcceptEncoding] := HTTP_SupportedEncoding;
      DoCORSSupport(aRequestHeaders,lResponseHeaders);
      ParsePathInfo(aRequestHeaders.Path,lroot,lSubPath);
      ldisp := TROHTTPMessageDispatchers(Dispatchers).GetDispatcherByPath(lroot) as TROHTTPDispatcher;

      if ldisp = nil then begin
        {$IFDEF DELPHI10UP}{$REGION 'disp = nil'}{$ENDIF}
        lRequestStream := TROBytesStream.Create(lRequest);
        lResponseStream := TROBytesStream.Create;
        try
          if HandleExtendedDispatchers(lroot, aRequestHeaders, lResponseHeaders, lRequestStream,lResponseStream) then begin
          end
          else if HandleUnknownRequest(aTarget, aRequestHeaders, lRequest) then begin
          // don't handle it
          Exit;
          end
          else if DoProcessDocs(aRequestHeaders,lResponseHeaders,lResponseStream,lroot,lSubPath) then begin
          if lResponseHeaders.Code = HTTP_FAILED then
          WriteError(lResponseHeaders,lResponseStream,HTTP_500_code,HTTP_500_status,HTTP_500_error_invalid_path);
          end
          else begin
          WriteError(lResponseHeaders,lResponseStream,HTTP_500_code,HTTP_500_status,Format(err_NoDispatcherConfiguredForS,[lroot]));
          end;
          lb := lResponseStream.Bytes;
          SetLength(lb, lResponseStream.Size);
          SendResponse(aTarget, lResponseHeaders, lb, nil, True);
        finally
          lResponseStream.ResetCapacity;
          lRequestStream.ResetCapacity;
          lResponseStream.Free;
          lRequestStream.Free;
        end;
        {$IFDEF DELPHI10UP}{$ENDREGION}{$ENDIF}
      end
      else begin
        {$IFDEF DELPHI10UP}{$REGION 'DispatchMessage <> nil'}{$ENDIF}
        if not ldisp.Enabled then begin
          SendError(aTarget, lResponseHeaders, Format(err_DispatcherForSIsDisabled,[lroot]));
          exit;
        end
        else if ldisp.Message = nil then begin
          SendError(aTarget, lResponseHeaders,Format(err_MessageForDispatcherSIsHasNotBeenAssigned,[lroot]));
          exit;
        end
        else if (Length(lRequest) = 0) and ServeRodl then begin
          lRequestStream := TROBytesStream.Create(lRequest);
          lResponseStream := TROBytesStream.Create;
          try
          lTransport := TQueueItem.Create(self, aTarget, aRequestHeaders, lResponseHeaders, ldisp, lRequest);
          if IntDispatchMessage(ldisp, lTransport,  lRequestStream, lResponseStream, lIgnore) then
          lResponseHeaders.ContentType := lTransport.ContentType
          else
          WriteError(lResponseHeaders,lResponseStream,HTTP_500_code,HTTP_500_status,HTTP_500_error_invalid_path);
          lb := lResponseStream.Bytes;
          SetLength(lb, lResponseStream.Size);
          SendResponse(aTarget, lResponseHeaders, lb, nil, True);
          finally
          lResponseStream.ResetCapacity;
          lRequestStream.ResetCapacity;
          lResponseStream.Free;
          lRequestStream.Free;
          end;
          exit;
        end
        else if ((aRequestHeaders.Method = 'GET') or (Length(lRequest) = 4)) and(ServeRodl) then begin
          if (lSubPath = '') or (lSubPath = 'rodl') then begin
          SendRodl(aTarget, aRequestHeaders, lResponseHeaders, ldisp);
          exit;
          end
          else begin
          SendError(aTarget, lResponseHeaders, Format(err_MessageForDispatcherSIsHasNotBeenAssigned,[lroot]));
          exit;
          end;
        end
        else if Supports(ldisp.Message, IRONamedModuleInfo, info) and (CompareText(info.ModuleInfoName, lSubPath) = 0) and ServeRodl then begin
          SendModuleInfo(aTarget, aRequestHeaders, lResponseHeaders, info);
          exit;
        end
        else begin
          IncomingData(aTarget, aRequestHeaders, lResponseHeaders, lRequest, ldisp);
        end;
        {$IFDEF DELPHI10UP}{$ENDREGION}{$ENDIF}
      end;
    except
      on e: Exception do
        SendError(aTarget,lResponseHeaders, e.Message);
    end;
  finally
    lResponseHeaders.Free;
  end;
end;


真不知道,这个到底要怎么改。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 jczxdai (草籽) ▲▲△△△ -
注册会员
2019/5/17 10:02:08
16楼: 这个bug到9.7都没有消灭。。。?
----------------------------------------------
草籽天涯
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行58.59375毫秒 RSS