【问题标题】:Using Breeze with a WebApi Service from another domain将 Breeze 与来自另一个域的 WebApi 服务一起使用
【发布时间】:2018-10-26 23:01:31
【问题描述】:

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

【问题讨论】:

    标签: breeze


    【解决方案1】:

    跨源微风应用

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

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

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


    更新日期:2013 年 12 月 10 日

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

    这个答案的其余部分保持原来的写法。


    使用 CORS 的 Todo 示例

    在此之前,请查看Todo Sample 的代码。该示例的服务器是为 CORS 设置的,已部署到 todo.breezejs.com,您可以通过查看 Breeze Todo Sample topic page 底部的 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'; // 不同来源的控制器

    希望现在能让你渡过难关。

    【讨论】:

    • 仍然没有合适的 CORS 端到端示例?
    • @DotNetWise,Todo 样本如何不适合此特定目的?
    • 您需要手动调整 web.config 例如删除“OPTIONSHandler”和 WebDavModule,然后手动处理 Access-Control-Allow-OriginAccess-Control-Allow-Methods 等,以便在 WebAPI 中正确处理 CORS
    • 为什么我不必在 Todo 中这样做?也许您是说 Todo 方法“不正确”。这很酷。没有难过的感觉....曾经:)。但想知道是什么让它“不恰当”。
    • @Ward - 我有一个 MVC 应用程序,客户端带有 Hot Towel,服务器端有一个 WebApi 项目。元数据请求正常命中服务器(我的断点被命中),但我在浏览器上收到以下错误(索引):1 XMLHttpRequest cannot load http://localhost:63017/api/breeze/Metadata. Origin http://localhost:60325 is not allowed by Access-Control-Allow-Origin. 我正在按照上述步骤操作,但仍然存在错误。 var mgr = new breeze.EntityManager('http://localhost:63017/api/breeze');
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2013-07-09
    • 1970-01-01
    • 2012-07-09
    相关资源
    最近更新 更多