当前位置: 首页 > 知识库问答 >
问题:

无法通过请求。使用http代理中间件时的参数。。。NodeJS/Express

武卓
2023-03-14

我是节点新手,在使用http代理中间件时无法传递请求参数。。

这给我带来了404错误

这是express listener:

  app.put("/api/markets/:id",()=>{..code..});

这是axios PUT请求:

axios
  .put("/api/markets/" + idToPass, {..Object..})
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.log(err);
  });

这就是proxyMiddleware:

const proxy = require("http-proxy-middleware");

module.exports = function(app) {
  app.use(proxy("/api/*", { target: "http://localhost:3050" }));
};

我的客户端在localhost:3000(react app)上运行,我的服务器在localhost:3050上运行

当我打开“浏览器网络”选项卡来检查请求时,我看到有人正在呼叫

localhost:3000/api/markets/idContent

localhost:3050/api/markets/idContent

就像它应该的那样。

当我手动发送到

localhost:3050/api/markets/idContent

我怎么解决这个问题,有什么想法吗?

提前Thx

共有2个答案

商棋
2023-03-14

您没有指定基本URL。创建axios实例并指定正确的基本URL:

const instance = axios.create({
  baseURL: 'http://localhost:3050'
});

然后使用该实例发出每个axios请求:

instance
  .put("/api/markets/" + idToPass, {..Object..})
  .then(res => {
    console.log(res);
  })
  .catch(err => {
    console.log(err);
  });
黄弘盛
2023-03-14

问题似乎出在代理配置上。到目前为止,它只匹配一个级别的URL。

尝试/api/api/**代替

const proxy = require("http-proxy-middleware");

module.exports = function(app) {
  app.use(proxy("/api", { target: "http://localhost:3050" }));
};
 类似资料:
  • 我正在用python创建一个基于BaseHTTPServer的代理服务器。它所做的是创建到squid代理的连接,识别浏览器请求(GET、CONNECT、POST等),并向其添加代理授权标头,然后将此请求转发给squid代理。 问题是,据我所知,当我发送连接请求时,我应该将所有相应的流量中继到squid代理。但是,正如我在wireshark中看到的,squid代理没有回复握手的“Client Hel

  • 问题内容: 我面临着Java6 / 8的奇怪行为。我尝试通过需要基本用户身份验证的代理进行隧道传输。通过标准的Java身份验证器执行此操作。如果我尝试访问https网址作为第一个网址,则会引发异常: java.io.IOException:无法通过代理隧道。代理返回“需要HTTP / 1.1 407代理身份验证” 但是,如果我先访问http URL,然后再访问https URL,则https访问正

  • 问题内容: 我正在尝试构建一个简单的Golang / Appengine应用程序,该应用程序使用通道来处理每个http请求。原因是我希望每个请求都执行合理的大内存计算,并且以线程安全的方式执行每个请求(即,并发请求的计算不会混淆)非常重要。 本质上,我需要一个同步队列,该队列一次只能处理一个请求,并且通道看起来很自然。 是否可以将Go的缓冲通道用作线程安全队列? 但是,我无法让我简单的hello

  • 自从我升级到Xcode 7测试版后,我有一个无法修复的错误。这是我的DataManager.swift的完整代码 因此,我得到了以下错误:“无法使用类型为”(NSURL,completionHandler:(NSData!,NSURLResponse!,NSError!)的参数列表调用“dataTaskWithURL”-

  • 是否可以通过http请求(GET或POST)直接调用AWS Lambda函数?如果没有,是否有通过SNS或S3的解决方案?因为我想不出一个。。。 具体来说,我想使用 JSON 创建一个小的 API

  • 我有一个创建-反应-应用程序前端,我需要代理和更改起源到我的烧瓶套接字-io后端开发期间,以绕过CORS。我已经建立了超文本传输协议-代理-中间件,这是我在过去的项目中成功完成的。我的roxy.js: 在套接字设置期间,我没有做任何特别的事情: 当我运行开发服务器时,它不会代理我的套接字iOS请求。我的服务器报告: 有没有想过我可能做得不对?