【问题标题】:Cross domain issue - api different domain than frontend跨域问题 - api 与前端不同的域
【发布时间】:2013-12-22 11:53:30
【问题描述】:

我不熟悉这个问题,希望您能提供帮助。
我正在开发一个网络应用程序。我的后端 api 端点位于 http://www.example.com/api 下,而我的前端应用程序位于 http://www.otherdomain.com
问题是当我尝试发出 ajax 请求时遇到跨域问题。
我在前端使用 AngularJS,在后端使用 RoR (rails)。
你知道如何解决它吗?

【问题讨论】:

  • 您尝试做的基本上是跨站点脚本,通常被认为是禁忌:en.wikipedia.org/wiki/Cross-site_scripting。您可能想研究 JSONP 以调用另一个域,或者您想在 otherdomain.com 上构建服务器端代理以从服务器 [而不是客户端] 访问 example.com 上的 API。

标签: javascript ruby-on-rails ajax angularjs cross-domain


【解决方案1】:

出于安全原因,浏览器正在阻止对另一个域的 ajax 请求(您可以阅读here)。但是你可以尝试使用$http.jsonp()

【讨论】:

    【解决方案2】:

    我们之前在 PHP 和 Java 后端 Api 中遇到过几次这种情况。但我们的解决方案始终是将其包含在您的 api 服务器标头中:Access-Control-Allow-Origin "*"

    【讨论】:

    • 好主意;但究竟如何将其包含在他们的 API Server 标头中?您公开了哪些类型的 API,以什么方法和使用什么技术?
    • 我们在我们的 RESTFUL apis 服务器中使用了它,这将解决您的跨域问题 sur 。您可以通过代码或在您的机器配置中添加此配置。不知道在 RoR 中如何,但我敢肯定有人已经这样做了。 :D。祝你好运。
    【解决方案3】:

    最好的解决方案可能是使用nginx 设置reverse proxy,以便本地服务器可以在您的本地域上接收请求,并在收到请求时反向代理到目标服务器( CORS 限制不适用于服务器)。

    另一个解决方案是这个简洁的 Javascript 代理: https://github.com/jpillora/xdomain

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 2021-08-18
      • 2019-06-21
      • 2016-06-17
      • 2017-08-29
      • 1970-01-01
      • 2019-11-14
      • 2017-08-15
      相关资源
      最近更新 更多