Angular Proxy.Conf.Json 不适用于多个 api

2023-12-09

我有以下 proxy.conf.json、日志行和 api 调用。

  {
  "/first/api/": {
    "target": "/first/api/",
    "secure": false,
    "logLevel": "debug"
  },
  "/second/api/": {
    "target": "/second/api/",
    "secure": false,
    "logLevel": "debug"
  }


[HPM] GET /first/api/values-> /first/api/
[HPM] GET /second/api/dummy -> /second/api/

return this.http.get<any>(this.firstApi + 'values')
return this.http.get<any>(this.secondApi + 'dummy')

鉴于我可以看到日志行,我相信 proxy.conf.json 已正确接收 api 调用,但当调用结束时我收到 404。日志只输出目标,所以我不清楚如何编写我需要的url,例如:本地主机/第一个/api/值

当只有一个 api 时,这可以正常工作:

  {
  "/api/": {
    "target": "/first/",
    "secure": false
  }

有人可以建议我进一步的调试步骤吗?


SOLVED

yanky_cranky 的回答是正确的。作为理解他的答案与我所看到的内容有何关联的助手,我还需要查看我的 IIS 日志。在这里我可以看到正在调用哪些网址。


首先,这里你没有正确利用 Angular 的代理概念。

1) 关于代理:代理可用于将任何请求(例如“/first/api”)映射到您无法访问的特定“域”。 如果 api 不是公开的,如果 api 指向不同的主机,则会导致 cors 问题(这是浏览器的属性):{即,主机名或端口或两者都不同} 借助 Angular,在我们的开发阶段,我们可以利用 Nginix 提供的相同反向代理概念并定位到正确的域。

有关代理的更多信息请参见此处

2)你的Nginx配置将导致: 以下路径:

  {
  "/first/api/": {
    "target": "/first/api/",  
    "secure": false,
    "logLevel": "debug"
  },

/first/api/first/api/ ,因此你得到 404

  "/second/api/": {
    "target": "/second/api/",
    "secure": false,
    "logLevel": "debug"
  }

/second/api/second/api/ ,相同 404

3) 正确配置 :

 {
  "/first/api/": {

    "target": "http://localhost:{portNo}",

    "secure": false,

    "logLevel": "debug"

  },
  "/second/api/": {

    "target": "http://localhost:{portNo}",

    "secure": false,

    "logLevel": "debug"

  }

这些 api 将定位到:

http://localhost:{端口号}/第一个/api

http://localhost:{端口号}/秒/api

干杯(y)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular Proxy.Conf.Json 不适用于多个 api 的相关文章

随机推荐

  • 邻区信息不准确

    我正在尝试利用有关相邻小区的移动信息 该信息可在 Android 上通过TelephonyManager类及其getNeighboringCellInfo方法 下面我发布了完成这项工作的一部分代码 主要取自公开来源 以及该代码产生的输出的一
  • 具有变异状态的 JavaScript 日志记录对象[重复]

    这个问题在这里已经有答案了 这段 JavaScript 代码 var o console dir o o foo bar console dir o results in the same interactive tree output s
  • 如何在Android中集成Azure媒体播放器

    我有一个必须播放的清单流媒体网址 如何在android中集成azure媒体播放器来播放流视频 我找到了另一种解决方法来播放清单网址 只需连接即可 format m3u8 aapl v3 在网址末尾 您可以使用任何视频播放器播放此网址
  • 类型转换和初始化,在 Swift 中哪个更好?

    由于Swift对类型做了严格的检查 有时我们需要在NSString和String NSArray和 AnyObject 等之间进行转换 但实际上有两种不同的方法可以做到这一点 类型转换 例如str as String 初始化 比如Strin
  • 在 Angular 中取消提交表单

    我需要一个表格才能两者兼而有之 dirty并不是 submitted为了我的验证工作 我正在尝试通过 CSS 使用 ng invalid ng dirty and ng submitted由 Angular 动态添加的类 这意味着我不能简单
  • 为什么 pynput 不检测数字键盘按下?

    我在 Windows 7 上使用 python 3 7 有没有办法检测 pynput 模块中的数字 例如 1 按键 我尝试了很多其他模块 但除了 tkinter 之外我什么也没得到 它需要一个窗户 但我不想要那个 from pynput i
  • 将日期插入数据库 Postgres JDBC

    我是 Java 新手 也是 Postgres 新手 我有一个关于餐厅的小项目 我有一个像这样的 struk eng bill 表 我有一种方法可以将信息插入到该表中 如下所示 public int insertBill int id kar
  • Set-Content 在我的文件末尾附加一个换行符(换行符、CRLF)

    我的原始配置文件 web1 config 没有多余的行 在记事本中查看 显示所有字符 时看起来如下
  • xcodebuild 期间 RestKit/RestKit.h' 文件未找到错误

    我正在尝试使用 Jenkins CI 自动构建一个使用 Restkit 的 iOS 项目 显然 restkit 作为主项目中的一个项目驻留在其中 并且该项目使用 XCode IDE 成功构建 但是当我使用 xcodebuild jenkin
  • Docker 构建:无法获取档案

    我在 Windows 机器上使用 docker 工具箱 我正在尝试从 github 构建这个项目https github com pyannote pyannote video 当我通过运行构建图像时docker build t pyann
  • jQuery/Ajax 请求被发送两次

    我一遍又一遍地扫描我的代码 但似乎找不到问题 当我点击链接时 add user btn文件actions php被调用两次 因此 PHP 脚本被执行两次 这是脚本 我想它与ajax请求前面的javascript有关 function add
  • 抓住模式下方的六条线

    我有这些重复的台词 FINAL RESULTS NSTEP ENERGY RMS GMAX NAME NUMBER 1000 4 7910E 01 2 1328E 01 9 4193E 01 C 62 最终结果表示一组值的平均值 输出文件合
  • Windows $env:path ="$($env:path);。"它是在哪里添加的?

    我通过运行 解决 了一个问题 env path env path 来自 PowerShell 显然它将当前目录添加到我的路径中 请问它添加到哪个路径变量 在我的环境变量对话框中 我会在哪里看到它被添加 用户变量 系统变量 我很困惑 因为我已
  • 如何使用递归构建螺旋方阵?

    我想使用递归构建一个螺旋方阵 我可以使用迭代方法构建螺旋方阵 如下所示 void main int initial direction UP n MAX p 1 intial direction is set to UP because w
  • 使用 JavaScript 写入 HTML 时出现换行问题

    我在用着常规文本框作为用户写评论的文本输入 然后我使用 JQuery 和 JSON 将数据发送到服务器 然后将其插入数据库 当我想显示此文本时 我使用 jQuery 下载它并准备 HTML 并将其显示在浏览器中 但没有新行 如何保留用户输入
  • Grails:启动应用程序而不连接到数据库

    我在 grails 中有一个应用程序 我可以更改欢迎页面中的参数 包括数据库配置 服务器 用户名等 我从数据源外部化了数据库配置 以便我可以更改它 我想做的是能够在不配置任何数据库的情况下启动应用程序 这样我就可以在欢迎页面中配置它 这对于
  • 如何将应用内购买功能添加到我的 flutter 应用程序中?

    我打算向我的 flutter 应用程序添加应用程序内购买功能 但找不到任何有关应用程序内购买的相关信息或示例应用程序 任何人都可以分享包含应用程序内购买功能的任何链接或示例应用程序吗 谢谢 看看这个包 https pub dev packa
  • 删除字符串中的所有空格

    vb net 中是否有任何函数可以删除字符串中的所有空格 我的意思是像 这是什么 这样的字符串应该是 Whatisthis 谢谢 富尔坎 Use 字符串替换 Dim s As String What is this s s Replace
  • 即使从日历中选择日期后,如何保持 mat-datepicker 日历打开?

    我想保留mat datepicker在特定的 div 中打开 我用了opened true属性 但在选择日期后就会关闭 这应该适合你 将其添加到您的input click openCalendar picker keepOpen 这给你的m
  • Angular Proxy.Conf.Json 不适用于多个 api

    我有以下 proxy conf json 日志行和 api 调用 first api target first api secure false logLevel debug second api target second api sec