如何轻松使用现有的webapi服务?请注意,我的webapi服务位于“server1 / api”,Web应用程序位于“server2”。我尝试更改dataservice中的服务名称,但获取XMLHttpRequest异常101.这是一个跨域错误。是否可以将breeze用于来自其他域的webapi服务?
答案 0 :(得分:14)
是的,可以从一台服务器获取Breeze客户端应用程序,并使该Breeze应用程序与托管在其他服务器上的数据服务进行通信。
当为CORS配置服务时,Breeze客户端应用程序在CORS-supportive浏览器上运行得非常好。
跨域问题和CORS解决方案属于更常见的Web安全问题类别。它们不是Breeze特有的。我们计划在Breeze网站的"Cool Breezes"部分发布关于CORS + Breeze的主题。
此示例使用原始CORS实现,如果已升级到Web API2,我们不再推荐这种实现。请阅读这篇优秀的文章"CORS Support in ASP.NET Web API 2",该文章解释了基本的CORS以及如何使用Web API2 CORS支持。
这个答案的其余部分仍然是最初写的。
在此之前,请查看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'; //不同来源的控制器
希望你现在能够嘲笑你。