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

Pan*_*ane 5 breeze

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

War*_*ard 14

跨源Breeze应用程序

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

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

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


更新:2013年12月10日

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

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


带CORS的Todo样品

在此之前,请查看Todo示例的代码.该示例的服务器已设置为CORS,已部署到todo.breezejs.com,您可以通过查看Breeze Todo示例主题页面底部的jsFiddle来查看它.

四个兴趣点:

  • App_Start/BreezeSimpleCorsHandler.cs完成了这项工作

  • App_Start/BreezeWebApiConfig.cs将其打开

// CORS enabled on this server
GlobalConfiguration.Configuration.MessageHandlers.Add(new BreezeSimpleCorsHandler());
  • 一个Web.config文件 行你所需要的IIS7(不需要IIS8或VS2012的IIS快递)

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

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

希望你现在能够嘲笑你.