代理外部 REST API 的正确方法



我们需要使用外部REST Api并动态更新我们网站上的内容,并且遇到了跨站点脚本和Ajax的古老问题。

我已经阅读了JSONP,但是我不想在一百万年内走这条路,因为它似乎真的是一个相当肮脏的黑客。

作为此问题的解决方案,让本地服务充当对外部 API 的任何请求的代理是否"正确"和"适当"?因此,在客户端上,将有一个 Ajax 调用来../RestProxy/MakeRequest将它需要向外部 API 发出的请求的详细信息传递给它,它执行请求并返回任何传递回来的内容。

任何想法将不胜感激。

有三种方法可以做到这一点:

1. JSONP

这被许多流行的 API 和框架所接受。JQuery 使它变得简单。我会推荐这个。

2. 代理

工作原理与您描述的差不多。为您添加额外的步骤以及服务器代码和服务器负载。但是,它确实允许您在将结果发送到客户端之前对其进行筛选或以其他方式操作。

3. 依赖访问控制允许原产地

这是服务器可以设置的标头,允许您直接从其服务器读取 json,即使您不在同一域中也是如此。这消除了对jsonp黑客的需求,但它需要设置服务器以支持它,并且它需要一个支持它的Web浏览器。

访问控制允许源在以下版本中受支持:

  • IE8+
  • 火狐 3.6+
  • 野生动物园 4.0+
  • 铬 6+
  • iOS Safari 3.2+
  • 安卓浏览器 2.1+

如果您需要支持 IE7,则此选项不适合您。

最新更新