0

Angular CLIhttp-proxy-middleware是否可以拦截/代理对外部 URL 的调用,例如 Azure Functions 或 Firebase 函数等无云服务器功能?

例如,针对外部基于云的函数 URL,例如https://foobar.azurewebsites.net/api/SampleHttpFunction?code=123ABC456XYZ==,您将如何设置proxy.conf.json拦截此 URL/路径?

以下配置确实成功拦截了 HTTP 请求(target出于开发目的,设置为本地运行的云功能 localhost 端口)。Angular 应用程序使用 command 启动"ng serve --proxy-config proxy.conf.json --open"

{
  "/api": {
    "target": "http://localhost:1234",
    "secure": false
  }
}

{
  "foobar.azurewebsites.net/api": {
    "target": "http://localhost:1234",
    "secure": false
  }
}

{
  "**/api": {
    "target": "http://localhost:1234",
    "secure": false
  }
}

对任何这些配置的HttpClient调用https://foobar.azurewebsites.net/api/SampleHttpFunction?code=123ABC456XYZ==仍会转到生产云功能 URL,而不是http://localhost:1234/api.

更新:根据我尝试使用多条目配置并使用启动应用程序的建议ng serve --proxy-config proxy.conf.js --open,但它仍然没有捕获 HTTP 调用:

const PROXY_CONFIG = [{
  context: [
    "/api",
    "**/api",
    "**/api/*",
    "https://foobar.azurewebsites.net/api/",
    "foobar.azurewebsites.net/api/",
    "foobar.azurewebsites.net/api/*",
    "*foobar.azurewebsites.net/api"
  ],
  target: "http://localhost:1234",
  secure: false
}]

module.exports = PROXY_CONFIG;

感谢您提供任何帮助!

4

1 回答 1

0

我的应用程序遇到了此类问题,其中拦截仅捕获第一个代理配置。我不得不改用JS格式化的代理。

const PROXY_CONFIG = [{
  context: [
    "/api",
    "foobar.azurewebsites.net/api",
    "**/api"
  ],
  target: "http://localhost:1234",
  secure: false
}];

module.exports = PROXY_CONFIG;
创建一个名为的文件并将fromproxy.conf.js替换为该文件并尝试。proxy.conf.jsonpackage.jsonjs

于 2017-09-02T22:25:39.900 回答