- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
老兄,这是一个很难正确陈述的问题,因为我在“公共(public) API”和“跨域”领域的知识有很多空白。
也许最好的方法就是举一个真实世界的例子:
我有一个主干 Marionette 应用程序。这很酷。它正在做很多我想让它做的事情。
我还有一些非常酷的图表 - 一个商业 HTML5 图表库。我想在我的 bb marionette 应用程序中使用图表库。
这是关键。我想在图表中显示的数据不是我的。这是纽约时报 API (http://developer.nytimes.com/docs) 提供的竞选财务数据。它也是其他公共(public) api 中提供的其他数据。
在我的脑海里,我认为我只需将我的 bb marionette 数据模型连接到纽约时报提供的 json URL,调用 model.fetch(),解析返回的 json 数据,将数据绑定(bind)到我的图表,然后我'我是金色的。但是无法获取数据,因为这是一个跨域请求——在 JavaScript 中是不行的。所以人们说“简单,只需实现 cors”。不能那样做。我不控制纽约时报的服务器,所以我不能在资源的标题中添加“允许访问控制”。我尝试使用的其他公共(public) api 也是如此。我认为“实现 cors”适用于“您”控制服务器的情况。
所以其他人写道“......你可以在你的网站上编写一个调用纽约时报 API 的服务器端包装器。然后你让你的客户端 JavaScript 调用你的包装器。因为它们在同一个域中,你避免了跨站点脚本问题。
您的客户端代码 --> 您的服务器端包装器 --> NYT API
理论上是有道理的。此类 API 的发布者(如纽约时报、天气服务或金融数据服务等)是否希望人们在说“我们的 API 是公开的”时这样做?这是假设的工作流程 - 使用您的服务器应用程序并中继到您的 Marionette 客户端应用程序吗?这是执行此操作的“bb Marionetty”方法吗?关于所涉及的约定,我在这里缺少什么?如果不通过客户端 JavaScript 调用(如 model.fetch()),开发人员通常如何使用公共(public) API?
我的 bb marionette 应用程序的服务器后端是 ASP.NET Web API。我应该如何将我的 bb Marionette 模型连接到我自己的 ASP.NET Web API 并让我的 Web API 调用纽约时报服务?我对一般“公共(public) API”原则的理解在这里并不扎实,因此我无法得出最佳实践。
最佳答案
我认为他们将其称为“公共(public) API”是有道理的,因为它对每个用户都是开放的。无需使用特殊帐户或凭据登录。
问题来自客户端,在本例中是浏览器。这是 Same-origin policy出于安全考虑。这不是“在 Javascript 中不行”,您也可以在 node.js 环境中执行此操作。
您解决这个问题的方法是一个名为代理的好方法,您可以从this article 获得更多详细信息。 .它被许多网站普遍使用。
另一种方式是JSONP .大多数 js 库/框架(例如 JQuery)都有一个包装器。它有一些限制,但无需额外的服务器端代码即可完成。
在您的情况下,我认为代理几乎是最佳实践(也许有更好的实践)。您可以精细地控制结果、处理错误、修饰它们,甚至将它们保留在您的网页中。
关于javascript - 如何在 Backbone Marionette 这样的单页框架中使用公共(public)的、跨域的 json 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20209366/
我真的不明白它们是如何有用的。原文article引入了初始化程序,这是代码示例: App = new Backbone.Marionette.Application(); App.addInitial
我正在准备使用 Backbone Marionette 迁移我的应用程序,但路由中出现错误: window.App = new Backbone.Marionette.Application
我正在尝试将 marionette.js 用于我的 Backbone 应用程序,但我对如何组织布局/区域并呈现它们感到有些困惑。 我正在寻找具有嵌套布局和区域的示例应用程序,以便我能更好地理解它。有什
我有一个带有区域的布局。当 Layout 初始化时,我希望它自动初始化一个预设 View 以进入它的区域,并在 Layout 本身显示/关闭时显示/关闭它。 当前示例来自 https://github
//当我点击 kickassessor 按钮时,它会更新数据库,但 View 不会更新。这是我的代码。 返回 Marionette.ItemView.extend( { initialize
我有需要显示/编辑的数据,这些数据似乎与 Marionette 提供的内置 View 不自然。让我举个例子来说明。 假设我想列出/编辑书籍。每本书都有一个 ISBN、一个书名和 0 个或多个标签。基本
我一直在查看各种 Marionette 问题,但没有找到我想要的,希望有人能给我一些合理的建议和一些建议。我是新手,只是想在我在 github 上选择的样板启动包上构建 https://github.
随着我的应用程序的增长,我觉得需要更结构化的路由器/ Controller 设置。 Marionette 文档提到以下内容: It is recommended that you divide you
在我的应用程序中,我添加了 Marionette.sync 插件并覆盖这些方法: Backbone.Marionette.TemplateCache.prototype.loadTemplate =
我想知道是否有可能以某种方式扩展 Marionette Layout 机制基于创建一种类似导航的堆栈。 Marionette 行为。 在区域 show() 的 View 之前,它会在当前显示的 Vie
看起来 Backbone.Marionette View 为事件等操作 DOM,所以我猜这不像更改基类引用那样微不足道,例如Backbone.View 到 BaseView。 有没有人解决过这个问题?
我正在使用 Marionette Layout .show渲染 CollectionView并想知道是否有办法检测 全部 ItemView children 已经完成了渲染? 我的代码的简化版本是:
因此,我不确定我是否完全理解应该如何触发此回调。如果您采用准系统模型、集合和 View : PatchModel = Backbone.Model.extend({}); PatchCollectio
我正在查看 Backbone Marionette,它似乎对我当前的项目很有前途。但是,无论 startWithParent 设置如何,添加模块时它们似乎都会自动启动。这是我遇到问题的一段代码(其中一
我是 Marionette 的新手,无法理解事件... 我有一个触发事件的 ItemView,我想在应用程序级别接收此事件,但是当我的应用程序监听此事件时,没有任何 react ... 如果事件聚合器
我有一个 CollectionView class MyCollectionView extends Backbone.Marionette.CollectionView itemView: My
我有一个复合 View ,在将模型添加到 View 集合时抛出以下错误:Uncaught ItemViewContainerMissingError: Missing itemViewContaine
我已经建立了一个项目,在其中扩展了包含两个不同区域的 Backbone.Marionette.Layout。该布局可以用作整个应用程序的组件。特别是,区域设置如下。 regions : { m
基本上,我试图将 CompositeView 呈现为一个简单的四列列表,其中包含一个表头,其中集合中的每个模型都呈现为一个并附加到 .我正在关注 an example of Derick's非常接近,
我正在尝试包含应用程序实例以使用其事件聚合器,如图所示 here 当我将实例包含在 View 中时,出现错误。 在 Requirejs 配置文件中启动 App.Bootloader.js: requi
我是一名优秀的程序员,十分优秀!