【发布时间】:2014-11-24 21:26:02
【问题描述】:
我是这个 delphi datasnap 的新手,几乎没有任何有用的文档。
我已经按照this guide 设置了一个简单的休息服务器。现在我想定义自己的身份验证协议。
据我所知。所有来自远程客户端的请求都将在调用服务器类方法之前通过 WebModule 方法进行处理。到目前为止,我能够像这样捕获客户端 IP 地址和请求 URL 路径:
procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
ShowMessage(request.RemoteAddr); // adress where request came from
ShowMessage(request.PathInfo); // url path
Response.SetCustomHeader('access-control-allow-origin','*');
if FServerFunctionInvokerAction <> nil then
FServerFunctionInvokerAction.Enabled := AllowServerFunctionInvoker;
end;
我怎么能:
拒绝请求依赖于特定的IP地址,并在到达类方法之前向客户端返回401状态码?
将客户端重定向到其他方法?例如:重定向此请求:
request = new XMLHttpRequest();
request.open('GET', 'http://localhost:8080/datasnap/rest/TServerMethods1/ReverseString/blah', true);
到另一个方法而不是 ReverseString。
【问题讨论】:
-
您向 HTTP 响应添加了 CORS 标头 (access-control-allow-origin)。知道这是否按预期工作会很有趣,允许跨域请求。
标签: delphi rest http authentication datasnap