kbmmw 的HTTPSmartService中的跨域访问

简介: 有同学在使用kbmmw 与extjs 结合的时候,涉及到了跨域访问,这个在 kbmmw 里面已经完全解决。 extjs 在访问跨域的时候,首先会使用OPIONS  调用,服务端要根据浏览器请求的 head 来回应客户端,如果正确,则客户端再调用GET 方式访问服务器。

有同学在使用kbmmw 与extjs 结合的时候,涉及到了跨域访问,这个在

kbmmw 里面已经完全解决。

extjs 在访问跨域的时候,首先会使用OPIONS  调用,服务端要根据浏览器请求的

head 来回应客户端,如果正确,则客户端再调用GET 方式访问服务器。

像不像我们地下党接头一样,首先要对一下暗号,暗号正确,开始交出城防图,不正确,对不起,开枪!

服务器端的代码,kbmmw 已经替大家处理了,很简单,只是设置允许访问的信息。

 [kbmMW_Method]
     [kbmMW_Rest('method:get, path: "itemlist/{query}"')]
     function GetItemlist([kbmMW_Rest('value: "{query}"')] const aQuery:string;
                          [kbmMW_Rest('value: "$ph", required: true')] const ph:string;
                          [kbmMW_Rest('value: "$pm", required: true')] const pm:string;
                          [kbmMW_Rest('value: "$xh", required: true')] const xh:string;
                          [kbmMW_Rest('value: "$gg", required: true')] const gg:string;
                          [kbmMW_Rest('value: "$th", required: true')] const th:string;
                          [kbmMW_Rest('value: "$jbm", required: true')] const jbm:string;
                          [kbmMW_Rest('value: "$gc", required: true')] const gc:string;
                          [kbmMW_Rest('value: "$limit", required: true')] const pagesize:string;
                          [kbmMW_Rest('value: "$page", required: true')] const pageindex:string;
                          [kbmMW_Rest('value: "$callback", required: true')] const callback:string):string;
  end;

implementation

uses kbmMWExceptions, Unit1;

{$R *.dfm}

{ TdgwRestService }

function TdgwRestService.GetItemlist(const aQuery, ph, pm, xh, gg, th, jbm,
  gc,pagesize, pageindex,callback: string): string;
begin
    ProcessCORSRequest;
    result := '{"result":"1","sumcount":1,"data":[{"PH":"ph001","PM":"pm001","XH":"xh001"},'
      + '{"PH":"ph002","PM":"pm002","XH":"xh002"}]}';
    if callback<>'' then
      Result:= callback + '(' + Result + ');';

end;

procedure TdgwRestService.kbmMWCustomHTTPSmartServiceCORS(Sender: TObject;
  const ARequestHelper, AResponseHelper: TkbmMWHTTPTransportStreamHelper;
  const AOrigin: string; var AAllowedOrigins, AAllowedMethods,
  AAllowedHeaders: string);
begin
  AAllowedMethods:='GET' ;
 AAllowedOrigins:='http://127.0.0.1';
  AAllowedHeaders:= 'x-requested-with';
 
end;

 

运行截图

网站的源地址是http://127.0.0.1

跨域访问的地址是http://127.0.0.1:81

下面一图顶万言。

还是很简单的。

 

目录
相关文章
Go字节数组与字符串相互转换
Go字节数组与字符串相互转换
306 3
使用kbmmw smart service 属性时的一个注意事项
kbmmw 5.0 以后支持smart service, 这个用起来非常方便,kbmmw 通过 定制属性来简化编程,可以参考我以前的文章。但是这个意味着使用单元引用一定要小心, 否则出了问题,都不知道怎么回事?浪费大量的时间。
1494 0
|
数据库 网络架构
kbmmw 的HTTPSmartService入门
前面介绍过kbmmw 中的smartservice. 这个既可以用于kbmmw 的客户端,也可以使用http 访问。 在新版的kbmmw里面,作者加强了http 的支持,我们可以只使用HTTPSmartService ,这样可以省去很多代码,可以更方便、简单的实现REST 服务。
1973 0
|
SQL JSON JavaScript
kbmmw 中JSON 中使用SQL 查询
前面讲到了kbmmw 的JSON 对象操作,如何快速的查找JSON 中的值? 一种办法就是通过遍历的方法,其实在kbmmw 还有一种灵活的查询方式, 就是通过SQL 方式查询JSON 中的值。也就是说用TKbmmwmemSQL 控件来实现。
1326 0
|
JSON 数据格式 XML
kbmmw 中JSON 操作入门
现在各种系统中JSON 用的越来越多。delphi 也自身支持JSON 处理。 今天简要说一下kbmmw 内部如何使用和操作JSON。 kbmmw 中json的操作是以TkbmMWJSONStreamer 为基础,要导入、导出JSON字符串, 首先要创建TkbmMWJSONStreamer.  然后是 TkbmMWJSONObject和 TkbmMWJSONArray。
1340 0
|
JSON 数据格式
李维 《使用Delphi开发分散式JSON应用系统》
李维 《使用Delphi开发分散式JSON应用系统》 下载
1447 0
|
27天前
|
人工智能 自然语言处理 Shell
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
本教程指导用户在开源AI助手Clawdbot中集成阿里云百炼API,涵盖安装Clawdbot、获取百炼API Key、配置环境变量与模型参数、验证调用等完整流程,支持Qwen3-max thinking (Qwen3-Max-2026-01-23)/Qwen - Plus等主流模型,助力本地化智能自动化。
36034 142
🦞 如何在 OpenClaw (Clawdbot/Moltbot) 配置阿里云百炼 API
|
9天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
4072 30
|
22天前
|
人工智能 安全 机器人
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手
OpenClaw(原Clawdbot)是一款开源本地AI助手,支持钉钉、飞书等多平台接入。本教程手把手指导Linux下部署与钉钉机器人对接,涵盖环境配置、模型选择(如Qwen)、权限设置及调试,助你快速打造私有、安全、高权限的专属AI助理。(239字)
7968 22
OpenClaw(原 Clawdbot)钉钉对接保姆级教程 手把手教你打造自己的 AI 助手