首页 > 解决方案 > 在同一个端口上运行 Angular 和 ASP.NET Web API

问题描述

我目前正在使用 Angular 向运行 ASP.NET 的 API 服务器发出 API 调用。但是,对于角度开发,我有一个跨域问题,我使用的是 localhost。在生产版本中,它们都将使用 IIS 在同一个域下运行。

有没有办法在与 ASP.NET 相同的端口上运行 Angular 应用程序?

PS:我也对解决此问题的其他替代方案持开放态度。

标签: asp.netangulariiscors

解决方案


我遇到了同样的问题,然后我在 medium 上找到了这篇文章,希望这对你有用。

编辑:实际上我使用的解决方案来自那篇文章。

这个想法是您不能在同一个端口上“发布”API 和 Angular 应用程序,但您可以使用代理从 Angular 应用程序连接到另一个端口上的 API。

更新:很抱歉很久以前没有回答这个问题。

要处理 cors 问题(在这种情况下),您可以使用带有ng serve命令的代理。

例如,就我而言,我使用了proxy.conf.json这样的文件:

{
  "/api/*": {
    "target": "http://localhost:3000",
    "secure": false,
    "pathRewrite": {"^/api" : ""}
  }
}

此代码将每个请求的 url 重写到/api/*http://localhost:3000的 api 正在侦听的位置。

因此,为了说明,如果您以角度提出请求http://localhost:4200/api/users,它将被重定向/重写以http://localhost:3000/api/users解决 cors 问题。

现在,您必须运行 Angular 应用程序的方式不同了。

ng serve --proxy-config proxy.conf.json

推荐阅读