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

问题描述 投票:5回答:1

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

breeze
1个回答
14
投票

Cross-origin Breeze Apps

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

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

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


UPDATE: 10 Dec 2013

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

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


Todo Sample with 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'; //不同来源的控制器

希望你现在能够嘲笑你。

© www.soinside.com 2019 - 2024. All rights reserved.