WCF RESTful服务从网站客户端脚本跨域访问
问题描述:
我正在使用VS 2010 IDE开发WCF RESTful服务,在研究期间,我们被告知API将部署在网站将托管的相同域中,例如。WCF RESTful服务从网站客户端脚本跨域访问
API托管: www.site.com/API/services.svc(其中API是一个虚拟文件夹)
网站托管: www.site.com
由于,相同的API将由我们的网站使用,我们计划在同一个域中部署客户端ajax,因此不会出现跨域/源访问问题。
但是,后来发生的变化是,iPad,iPhone和智能电视应用将使用相同的API,因为我们计划将API部署到另一个称为www的域中.api.com/services.svc它对所有设备应用程序的响应都很好,但是,由于它是来自客户端的跨域访问,因此我们在网站中遇到了问题。搜索结束后,我发现通过在Global.asax文件Application_BeginRequest()中实现以下代码,可以在API中打破以下跨代域策略的代码:Firefox & Safari浏览器,但不包含IE浏览器
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所在
答
据我所知,IE不允许有 “*”
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
尝试指定域。你也可以参考这里:
Access-Control-Origin in IE
非常感谢您的回答,并提供非常有用的帮助,请指导我如何为多个域允许访问控制 - 允许来源,我尝试用(,)分隔域但它不工作 – 2012-04-21 09:52:21