【问题标题】:Implementing CORS in Angular+ Node在 Angular+ 节点中实现 CORS
【发布时间】:2015-08-18 07:50:57
【问题描述】:

我在 Node+Angular js 中有一个已实现的前端,而后端在 Jetty 中运行,暴露了 REST 服务。我想将 REST 请求从 FE(Angular) 发送到后端。当我将完整的 URL 传递给 $http.get 时工作正常。但是我想让它成为一个可配置的值,这样 URL/端口的任何更改都不需要我在配置之外的其他地方进行更改。目前我将它作为 $http.post("http://localhost:8080/test/login/doStuff",dataObj) 传递 但是我想将它作为$http.post("/test/login/doStuff",dataObj) 传递,它应该自动附加http://localhost:8080.Can 有人帮我吗?

谢谢

【问题讨论】:

    标签: jquery angularjs node.js express cors


    【解决方案1】:

    CORS 用于启用两个不同主机之间的通信信任。例如,如果托管在两个不同服务器(不在同一个域中)的前端和后端需要 CORS 在它们之间进行通信。
    但是,在您的情况下,我没有看到有效的情况,除非它们按照说明分开部署。
    只要 Web 应用程序托管在同一服务器中,它们就始终可以使用相对路径进行通信。
    如果应用托管在/myApp 文件夹中,它可以使用/myApp/other-web-folders 访问其他资源。
    如果您想在域外进行通信,则始终必须使用完整的 url。希望这能澄清你的疑虑。

    【讨论】:

    • 感谢您的回复。我明白。我想让 url 可配置。有什么方法可以让我在 angular 方法中指定相对 url,那么其他域 url 将被附加?
    • 你可以设计一个这样的机制。始终将 URL 分为两部分。 hostpath。如果需要相应地从单独的域加载,您可以更改主机。这只是一个建议。但是,您无需在 Angular 级别执行任何操作即可启用 CORS,因为它发生在 Web 服务器级别。
    【解决方案2】:

    您可以将主机名存储在另一个变量中并将其与 网址

    let host = "http://localhost:8080"
    
    $http.post(host + "/test/login/doStuff", dataObj)
    

    【讨论】:

      猜你喜欢
      • 2018-03-27
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 2018-09-23
      • 1970-01-01
      • 2013-04-24
      相关资源
      最近更新 更多