从Web站点客户端脚本访问WCF RESTful服务跨域

时间:2012-04-11 13:01:52

标签: wcf rest cross-domain

我正在使用VS 2010 IDE处理WCF RESTful服务,在研究期间我们被告知API将部署在网站将托管的同一域中,例如。

API托管:www.site.com/API/services.svc(其中API是虚拟文件夹)

网站托管: www.site.com

因为,我们的网站将使用我们计划在同一域中部署的客户端ajax使用相同的API,因此不存在跨域/源访问问题。

但是,稍后有一个变化,即iPad,iPhone和智能电视应用程序将使用相同的API,因为我们计划在名为www的单独域中部署API的API将会有巨大的流量。 api.com/services.svc它对所有设备应用程序反应良好但是,我们在网站上有问题,因为它是来自客户端的跨域访问。在搜索之后,我通过在Global.asax文件Application_BeginRequest()中实现以下代码,找到了在API中破解此跨域策略的代码,它在Chrome,Firefox& Safari浏览器但不在I.E

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "x-requested-with");
if (HttpContext.Current.Request.HttpMethod.ToUpper() == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("X-DR-Request-Terminated-By", "CrossDomainXhr-OPTIONS");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}

请帮我解决这个问题...

提前致谢...

Sathish所在

1 个答案:

答案 0 :(得分:0)

据我所知,IE在

中不允许使用“*”
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");  

尝试指定域名。你也可以参考:
Access-Control-Origin in IE