首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CORS的Delphi XE4数据集

使用CORS的Delphi XE4数据集
EN

Stack Overflow用户
提问于 2014-07-15 02:31:31
回答 2查看 1.1K关注 0票数 3

我正在用REST开发一个datasnap服务器。当客户端尝试使用POST请求时,浏览器首先尝试执行OPTIONS请求,但我的服务器无法响应。搜索时,我发现了一个名为CORS (Cross Origin Resource Sharing)的浏览器安全问题,因为我的客户端与datasnap服务器位于不同的域中。

既然data snap没有OPTIONS rest请求,我该怎么办??

EN

回答 2

Stack Overflow用户

发布于 2016-09-03 08:28:04

您可以将Datasnap服务器设置为响应WebModule BeforeDispatch事件上的任何CORS请求。

代码语言:javascript
复制
procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  Response.SetCustomHeader('Access-Control-Allow-Origin','*');        

  if Trim(Request.GetFieldByName('Access-Control-Request-Headers')) <> '' then 
  begin 
    Response.SetCustomHeader('Access-Control-Allow-Headers', Request.GetFieldByName('Access-Control-Request-Headers'));        
    Handled := True;
  end;

  if FServerFunctionInvokerAction <> nil then
    FServerFunctionInvokerAction.Enabled := AllowServerFunctionInvoker;
end;
票数 2
EN

Stack Overflow用户

发布于 2014-09-30 01:19:24

解决方法:对HTTP (Apache HTTP)使用反向代理服务器,并配置Apache,以便OPTIONS请求将由不同的HTTP服务器应答。从外部看,客户端将无法看到差异,因为所有通信都是在客户端和Apache之间完成的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24743344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档