3

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

我已经阅读了 JSONP,但是我不想在一百万年后沿着这条路走下去,因为它看起来真的是一个相当肮脏的 hack。

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

任何想法将不胜感激。

4

1 回答 1

5

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

1.JSONP

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

2. 代理

就像你描述的那样工作。为您添加额外的步骤和服务器代码和服务器负载。但是,它确实允许您在将结果发送到客户端之前过滤或以其他方式操作结果。

3.依赖访问控制允许来源

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

Access-Control-Allow-Origin 支持:

  • IE8+
  • 火狐 3.6+
  • Safari 4.0+
  • 铬 6+
  • iOS Safari 3.2+
  • 安卓浏览器 2.1+

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

于 2012-04-11T16:41:16.760 回答