3

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

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

网站托管: www.site.com

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

但是,后来发生了变化,iPad、iPhone 和智能电视应用程序将使用相同的 API,因为我们计划将 API 部署在名为 www.api.com 的单独域中的 API 将会有巨大的流量/services.svc 它对所有设备应用程序的响应都很好,但是我们在网站上遇到了问题,因为它是来自客户端的跨域访问。经过搜索,我发现代码可以在 API 中破坏此跨域策略,如下所示,通过在 Global.asax 文件 Application_BeginRequest() 中实现以下代码,它在 Chrome、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();
}

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

提前致谢...

萨蒂什

4

1 回答 1

0

据我所知,IE 不允许使用“*”

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");  

尝试指定域。您也可以在这里参考:
IE 中的 Access-Control-Origin

于 2012-04-13T05:23:08.833 回答