我如何使用现有的WebAPI服务与Breeze一起使用?请注意,我的WebAPI服务位于“server1 / api”,而Web应用程序位于“server2”。我尝试更改数据服务中的服务名称,但是出现了XMLHttpRequest异常101。这是跨域错误。是否可以使用来自另一个域的WebAPI服务与Breeze一起使用?
我如何使用现有的WebAPI服务与Breeze一起使用?请注意,我的WebAPI服务位于“server1 / api”,而Web应用程序位于“server2”。我尝试更改数据服务中的服务名称,但是出现了XMLHttpRequest异常101。这是跨域错误。是否可以使用来自另一个域的WebAPI服务与Breeze一起使用?
是的,可以从一个服务器获取Breeze客户端应用程序,并使该Breeze应用程序与托管在不同服务器上的数据服务进行通信。
当服务配置为CORS时,在CORS-supportive浏览器上,Breeze客户端应用程序可以很好地实现跨域运行。
跨域问题和CORS解决方案属于Web安全问题的一般类别,这些问题不是特定于Breeze的。我们计划在Breeze网站的"Cool Breezes"部分发布有关CORS + Breeze的主题。
本示例使用了一种原始的CORS实现,如果您已经升级到Web API2,则不再建议使用。请阅读这篇优秀的文章"ASP.NET Web API 2中的CORS支持",其中解释了基本的CORS以及如何启用Web API2 CORS支持。
其余部分保持原文不变。
在此之前,请查看Todo示例的代码。该示例的服务器已设置为CORS,并已部署到todo.breezejs.com,您可以通过查看Breeze Todo示例主题页面底部的jsFiddle来查看其实际效果。
四个注意点:
App_Start/BreezeSimpleCorsHandler.cs 完成了工作
App_Start/BreezeWebApiConfig.cs 打开它
// 此服务器启用了CORS 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'; // 在不同来源的控制器
希望现在能帮到您。
XMLHttpRequest不能加载http://localhost:63017/api/breeze/Metadata。Origin http://localhost:60325未经允许不被Access-Control-Allow-Origin许可。
我按照上面的步骤进行了操作,但还是出现这个错误。var mgr = new breeze.EntityManager('http://localhost:63017/api/breeze');
- Carol AndorMarten Liebster