【问题标题】:AJAX Cross Domain request to WCF service without using jsonp不使用 jsonp 对 WCF 服务的 AJAX 跨域请求
【发布时间】:2013-06-19 04:41:47
【问题描述】:

我正在使用 WCF 服务,目前它由 Silverlight 应用程序使用。 WCF 服务具有 clientaccesspolicy.xml 和 crossdomain.xml,这就是为什么即使请求来自不同的域,从 Silverlight 发出请求也没有问题的原因。

现在我的理解是,在使用 .net 4.0 或更高版本构建的 WCF 服务的 Web 配置上添加以下代码行允许使用 jsonp 进行跨域请求

<standardendpoint crossdomainscriptaccessenabled="true">

但是,jsonp 无法解决我的问题,因为我需要添加 jsonp 不允许的自定义请求标头,因为它并没有真正生成 XMLHttpRequest。

我想知道,如果我用下面的sn-p代码编辑WCF服务的global.asax,我能成功地进行AJAX跨域请求吗?

protected void Application_BeginRequest(object sender, EventArgs e)
{
    EnableCrossDomainAjaxCall();
}

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

  if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
  {
   HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
   HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-        Type, Accept");
   HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
   HttpContext.Current.Response.End();
  }
}

请注意,我在部署 WCF 项目时遇到问题,所以我只是想知道我采用了正确的方法。

【问题讨论】:

  • 我已经解决了这个问题。

标签: ajax json wcf


【解决方案1】:
protected void Application_BeginRequest(object sender, EventArgs e)
{
    EnableCrossDomainAjaxCall();
}

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

  if (HttpContext.Current.Request.HttpMethod == "OPTIONS") 
  {
  HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
  HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Foo");
  HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
  HttpContext.Current.Response.End();
 }

}

成功了。

在我的例子中,我还必须添加一个名为 Foo 的自定义标头作为示例,因为我必须从客户端传递它。

希望它对某人有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 2012-04-23
    • 2013-10-29
    • 2023-04-03
    • 1970-01-01
    • 2012-07-29
    • 2012-10-23
    相关资源
    最近更新 更多