delphi httpserver 跨域

uses

IdBaseComponent,
  IdComponent, IdCustomTCPServer, IdCustomHTTPServer, IdHTTPServer, IdContext,
  IdHTTPHeaderInfo,
  IdHeaderList, IdGlobalProtocols

 

procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
  CustomHeadersStringList: TIdHeaderList;
begin
  AResponseInfo.CharSet := 'UTF-8';
  AResponseInfo.ContentType := 'application/json';

  CustomHeadersStringList := TIdHeaderList.Create(QuoteHTTP);
  CustomHeadersStringList.Add('Access-Control-Allow-Origin:*');

  AResponseInfo.CustomHeaders := CustomHeadersStringList;

  AResponseInfo.ContentText := '跨域';

  CustomHeadersStringList.Free;
end;

Delphi中使用WebBrowser控件进行跨域请求,需要通过JavaScript来实现。具体步骤如下: 1. 创建一个新的HTML文件,将需要请求的数据以JSON格式嵌入其中。 2. 在HTML文件中添加一个JavaScript函数,用于将请求数据发送到服务器并接收响应。 3. 在Delphi应用程序中加载该HTML文件,并通过WebBrowser控件调用该JavaScript函数。 以下是一个示例代码,用于实现以上步骤: HTML文件(data.html): ```html <!DOCTYPE html> <html> <head> <title>JSON Data</title> <meta charset="UTF-8"> <script type="text/javascript"> function getData() { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var data = JSON.parse(xmlhttp.responseText); window.external.onDataReceived(data); } }; xmlhttp.open("GET", "http://example.com/data.json", true); xmlhttp.send(); } </script> </head> <body onload="getData()"> </body> </html> ``` Delphi代码: ```delphi procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant); begin if URL = 'file:///C:/data.html' then begin WebBrowser1.OleObject.Document.parentWindow.execScript('getData();', 'javascript'); end; end; procedure TForm1.OnDataReceived(const data: WideString); begin ShowMessage(data); end; procedure TForm1.FormCreate(Sender: TObject); begin WebBrowser1.Navigate('file:///C:/data.html'); end; ``` 在该示例代码中,当WebBrowser控件加载完毕data.html文件时,会调用JavaScript函数getData(),该函数会向服务器发送请求并接收响应。当响应数据返回时,通过调用window.external.onDataReceived()函数将数据传递给Delphi应用程序。在Delphi应用程序中,实现了一个名为OnDataReceived的回调函数来处理接收到的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值