将Breeze与来自另一个域的WebApi服务一起使用

将Breeze与来自另一个域的WebApi服务一起使用,breeze,Breeze,如何将现有的webapi服务与breeze一起使用?请注意,我的webapi服务位于“server1/api”,而web应用程序位于“server2”。我尝试在dataservice中更改服务名称,但得到了XMLHttpRequest异常101。这是一个跨域错误。是否可以将breeze与其他域的webapi服务一起使用?跨源breeze应用程序 是的,可以从一台服务器获取Breeze客户端应用程序,并使该Breeze应用程序与托管在不同服务器上的数据服务通信 当为CORS配置服务时,Breeze

如何将现有的webapi服务与breeze一起使用?请注意,我的webapi服务位于“server1/api”,而web应用程序位于“server2”。我尝试在dataservice中更改服务名称,但得到了XMLHttpRequest异常101。这是一个跨域错误。是否可以将breeze与其他域的webapi服务一起使用?

跨源breeze应用程序 是的,可以从一台服务器获取Breeze客户端应用程序,并使该Breeze应用程序与托管在不同服务器上的数据服务通信

当为CORS配置服务时,Breeze客户端应用程序在浏览器上可以很好地跨源运行

跨来源问题和CORS解决方案属于更一般的web安全问题类别。它们并不具体。我们计划在Breeze网站的部分发布一个关于CORS+Breeze的主题


更新:2013年12月10日 此示例使用了一个基本的CORS实现,如果您已升级到Web API2,我们将不再建议您使用该实现。请阅读这篇优秀的文章,它解释了基本CORS以及如何使用Web API2 CORS支持

这个答案的其余部分仍然是原来写的


使用CORS进行Todo采样 在那之前,请看一下的代码。该示例的服务器是为CORS设置的,已部署到todo.breezjs.com,您可以通过查看该示例底部的JSFIDLE来查看它的运行情况

四个关注点:

  • App_Start/breezesimplecorshander.cs执行此操作

  • App_Start/BreezeWebApiConfig.cs将其打开

//此服务器上已启用CORS GlobalConfiguration.Configuration.MessageHandlers.Add(新的BreezSimpleCorsHandler());
  • IIS7需要的Web.config行(IIS8或VS2012的IIS Express不需要)

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

    //*跨来源服务示例* //var serviceName='';//不同来源的控制器


希望你现在就结束。

仍然没有CORS适当的端到端示例?@DotNetWise,Todo示例如何不足以满足此特定目的?你需要手动调整web.config,例如删除“optionHandler”和WebDavModule,然后手动处理
访问控制允许源代码
访问控制允许方法
等。这样它就可以在WebAPI中正确处理COR了为什么我不在Todo中这样做?也许你是说Todo方法“不恰当”。那很酷。别见怪曾经:)。但是我想知道是什么让它“不合适”。@Ward-我有一个MVC应用程序,客户端是热毛巾,服务器端是WebApi项目。元数据请求正在命中服务器ok(我的断点被命中),但我在浏览器上从(索引)中得到了错误提示:1
XMLHttpRequest无法加载http://localhost:63017/api/breeze/Metadata. 起源http://localhost:60325 访问控制允许源站不允许出现此错误。
我正在执行上述步骤,但仍然存在错误<代码>var mgr=new breeze.EntityManager('http://localhost:63017/api/breeze'); // CORS enabled on this server GlobalConfiguration.Configuration.MessageHandlers.Add(new BreezeSimpleCorsHandler());