从网站客户端脚本进行 WCF RESTful 服务跨域访问

标签 wcf rest cross-domain

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

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

网站托管: www.site.com

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

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

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

提前致谢...

萨提什

最佳答案

据我所知,IE 不允许在

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

尝试指定域。您也可以引用这里:
Access-Control-Origin in IE

关于从网站客户端脚本进行 WCF RESTful 服务跨域访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10106425/

相关文章:

wcf - ravendb、城堡 IoC、Wcf 设施 - 文档 session 生活方式

Java 客户端无法使用 WCF 服务

javascript - 通过ID访问API资源

java - 使用 Rest Assured 连续进行后调用时,无法到达 API 端点

javascript - 两个站点上的 SECURITY_ERR : DOM Exception 18 when applying document. 域。我该如何解决这个问题?

wcf - 在 WCF 中,超时是否会使 channel 出错?

c# - 使 WCF .NET 服务实现实现多个 ServiceContract 接口(interface)

java - 如何读取 JAX-RS( Jersey )中的 cookie

javascript - Socket.IO中的跨域连接

html - CORS withCredentials XHR 预检不在 Firefox 中发布 Cookie