跨越子域ajax调用

时间:2012-01-12 12:02:10

标签: api rest jquery jsonp

我们希望构建一个Web应用程序,它将使用我们的REST API并寻找绕过同源策略安全功能的方法。

我们有一个REST API,它来自SERVER_1的api.ourdomain.com。 我们有一个Web应用程序,它是来自SERVER_2的dashboard.ourdomain.com的服务器。

Web App使用包含GET,POST,DELETE和PUT请求的Ajax调用与REST API进行通信。

在将来的某个时候,我们可能会考虑允许第三方网站从他们自己的网站和域访问API。

由于浏览器的同源策略安全功能,不允许这些请求。

我们正在寻找避免这种情况的方法。

我们遇到的解决方案:

  1. 通过我们的代理隧道化请求。这会降低应用程序的速度并需要更多资源。
  2. JSONP - 仅适用于GET请求。我们不希望使用post / put / delete功能重载GET请求。
  3. 将iFrame与document.domain设置为同一个域。仅适用于ourdomain.com下的网站。
  4. EasyXDM等框架。似乎是一个很好的解决方案。
  5. 谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道EasyXDM,但我在多个应用程序中使用的是相同的架构。我们使用您建议的解决方案(1)。在我看来,通过一个共同的子域代理请求是最干净的解决方案。我不认为这是性能问题。许多站点使用像nginx之类的东西来做某种反向代理(作为缓存)。您可以通过http:// [yourhost] / api以及其他HTML,CSS和图像资源通过其他路径轻松地隧道传输API。