【问题标题】:Proxy not working for sending requests from one port to another代理无法将请求从一个端口发送到另一个端口
【发布时间】:2021-11-04 07:56:00
【问题描述】:

我正在尝试在学习课程的同时使用 MERN 堆栈构建一个简单的 Web 应用程序。

我的后端在端口 5000 上运行,而 react 在端口 3000 上运行。当我想使用后端 API 发出请求时,它会将请求发送到端口 3000 而不是 5000。我不断收到此错误消息:

xhr.js:178 POST http://localhost:3000/api/users 400(错误请求)

我在 package.json 中包含了"proxy" : "http://localhost:5000"。我尝试用 127.0.0.1 替换“localhost”。我尝试删除并重新安装 package-lock.json 和 node_modules 文件夹。我尝试删除代理并使用整个网址。我尝试安装 http 代理中间件。我也尝试在后端启用 CORS。

要么我被诅咒了,要么我做错了。

我正在使用 axios 来处理请求,这是代码。

const config = {
     headers: {
         'Content-type': "application-json"
     }
}

const body = JSON.stringify(newUser)
const res = await axios.post('/api/users', body, config)
console.log(res.data)

【问题讨论】:

  • 您为什么认为这是代理问题?错误显示 400 Bad Request,显然这是服务器的响应。你检查你的请求了吗?

标签: node.js reactjs express proxy mern


【解决方案1】:

尝试将基础 url 添加到 axios 配置中:

const config = {
    headers: {
        'Content-type': "application-json"
    }
    baseURL: 'http://localhost:5000',
}

【讨论】:

  • 这似乎将请求发送到正确的 URL。错误现在显示 localhost:5000/api/users 400 (Bad Request) 但 400 错误不断出现。 @Ibsn 提到要检查请求,我确定它的格式正确。当我为 /api/users 发布路由时,看起来请求甚至没有通过。控制台记录 req 对象返回一个空对象。
  • 您可以尝试记录有关错误的更多信息吗?
【解决方案2】:

绝对不是代理问题。问题可能是您将正文作为 JSON 字符串传递给 axios post() 方法。不需要这样做,只需传递对象即可:

const res = await axios.post('/api/users', newUser, config)

另外,Content-type 的正确值是 application/json(不是 application-json

【讨论】:

  • 请求仍然使用 JSON 字符串。一直以来,问题都是 Content-type 标头中的破折号。就我而言,这是一个简单的错误哈哈。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 2017-01-22
  • 1970-01-01
  • 2017-05-24
  • 2017-07-26
  • 2019-08-30
  • 1970-01-01
相关资源
最近更新 更多