代理正确的外部REST Api方式?

Dav*_*vid 3 ajax rest json

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

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

作为这个问题的解决方案,有一个本地服务作为任何外部Api请求的代理是"正确"和"正确"吗?所以在客户端上会有一个Ajax调用,../RestProxy/MakeRequest要求它向外部api传递它需要的请求的细节,它执行请求并返回传回的任何内容.

任何想法将不胜感激.

Cha*_*hon 5

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

1. JSONP

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

2.代理

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

3. Rely Access-Control-Allow-Origin

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

Access-Control-Allow-Origin支持:

  • IE8 +
  • Firefox 3.6+
  • Safari 4.0+
  • Chrome 6+
  • iOS Safari 3.2+
  • Android浏览器2.1+

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