0

因此,我实现了一个可供 Web 应用程序和移动应用程序访问的 API 提供程序。

很可能这不会是一个大型项目,但我想最大限度地利用我的学习经验,并尽我所能。

无论如何,据我了解,似乎最好将 API 提供程序服务和实际网站放在不同的域中,以使扩展更容易。例如,twitter 有网站 twitter.com 和 api.twitter.com。

一个直接的问题是处理 AJAX 的跨域问题。据我所知,有两种方法可以实现跨域 AJAX

  1. JSONP:我听说过,但除了名字之外不知道太多
  2. 代理服务器:所以,我的网站建立在 ASP.NET MVC 之上,我正在考虑创建一个 APIProxy 控制器来处理所有跨域 API 请求。

这样,我将通过 $.ajax(settings) 进行 AJAX 调用,然后传入与 APIProxy 控制器对应的网站 URL。APIProxy 控制器然后会进行适当的 POST 服务器调用并处理 JSON 响应并将响应返回给 AJAX 回调函数。

我听说flXHR我不想使用 Flash,因为 iPad 等设备或任何许多移动浏览器都不支持 Flash。

无论如何,我只是想问在单独的域或子域上使用 API 提供商管理网站的一些最佳实践是什么。

4

1 回答 1

2

当您请求一些 JSON 时,它会返回一个对象或数组。脚本标签不受同域规则的约束。因此,您实际上可以这样做,而不是进行 AJAX 调用:

<script src="Http://api.example.com?param1=something&etc"></script>

这将加载 JSON,并将作为 JavaScript 执行。

...但是一个简单的对象或数组本身“执行”并不是很有用。因此,当您请求 JSON 时,您还包括回调函数的名称。如果提供者看到提供了回调,而不仅仅是返回 JSON,它实际上返回 JavaScript:JSON 作为参数传递给您的函数。

然后,当脚本加载时,您的函数(您已经定义)被调用,并提供 JSON 以使用。

那是JSONP。

参考书目

  1. 牛顿,亚伦。“请求.JSONP。” 客户杀戮。2009 年 12 月 7 日。网络。2011 年 1 月 28 日。
于 2011-01-28T17:50:08.067 回答