将Breeze与来自其他域的Web Api服务一起使用

时间:2013-01-31 15:14:44

标签: breeze

如何轻松使用现有的webapi服务?请注意,我的webapi服务位于“server1 / api”,Web应用程序位于“server2”。我尝试更改dataservice中的服务名称,但获取XMLHttpRequest异常101.这是一个跨域错误。是否可以将breeze用于来自其他域的webapi服务?

1 个答案:

答案 0 :(得分:14)

跨源Breeze应用

是的,可以从一台服务器获取Breeze客户端应用程序,并使该Breeze应用程序与托管在其他服务器上的数据服务进行通信。

当为CORS配置服务时,Breeze客户端应用程序在CORS-supportive浏览器上运行得非常好。

跨域问题和CORS解决方案属于更常见的Web安全问题类别。它们不是Breeze特有的。我们计划在Breeze网站的"Cool Breezes"部分发布关于CORS + Breeze的主题。


更新时间:2013年12月10日

此示例使用原始CORS实现,如果已升级到Web API2,我们不再推荐这种实现。请阅读这篇优秀的文章"CORS Support in ASP.NET Web API 2",该文章解释了基本的CORS以及如何使用Web API2 CORS支持。

这个答案的其余部分仍然是最初写的。


带有CORS的Todo样本

在此之前,请查看Todo Sample的代码。该示例的服务器是为CORS设置的,已部署到todo.breezejs.com,您可以通过查看Breeze Todo Sample topic page底部的jsFiddle来查看它的实际效果。

四个兴趣点:

  • App_Start / BreezeSimpleCorsHandler.cs 完成工作

  • App_Start / BreezeWebApiConfig.cs 将其启用

// CORS enabled on this server
GlobalConfiguration.Configuration.MessageHandlers.Add(new BreezeSimpleCorsHandler());
  • IIS7需要的 Web.config 行(IIS8或VS2012的IIS Express不需要)

  • Scripts / app / dataservice.js 已准备好指向外部服务器;看到这一行:

    // *跨源服务示例* // var serviceName ='http://todo.breezejs.com/api/todos'; //不同来源的控制器

希望你现在能够嘲笑你。