Javascript axios不通过http代理中间件向服务器发送post请求

Javascript axios不通过http代理中间件向服务器发送post请求,javascript,axios,http-proxy-middleware,Javascript,Axios,Http Proxy Middleware,server.js import axios from 'axios'; axios .post('api/email', { id: 1 }) .then((res) => { return res.data; }) 我的服务器位于本地主机:8080。 我在nextJS中编写客户端,当url调用时,我使用http代理中间件包。也就是说,所有包含/api/的请求都将从localhost:3000重定向到localhost:8080。 axios不发送post请求,

server.js

import axios from 'axios';

axios
  .post('api/email', { id: 1 })
  .then((res) => {
     return res.data;
  })
我的服务器位于本地主机:8080。
我在nextJS中编写客户端,当url调用时,我使用http代理中间件包。也就是说,所有包含/api/的请求都将从localhost:3000重定向到localhost:8080。 axios不发送post请求,get正常。
在开发人员模式浏览器中查看“网络”选项卡时,它会显示请求头本身,但不显示方法。“计时”选项卡显示“警告请求尚未完成”。

UPD:我刚刚尝试通过fetch发送,结果是一样的,但我也删除了内容类型:“application/json”,fetch对我有效。但这是为什么?我该如何解决


我能解决我的问题。在此处找到解决方案:,
问题是server.js
这是正确的代码

const express = require('express');
const next = require('next');
const { createProxyMiddleware } = require('http-proxy-middleware');
const port = parseInt(process.env.PORT, 10) || 3000;
const dev = process.env.NODE_ENV !== 'production';

const app = next({ dev });
const handle = app.getRequestHandler();

const apiPaths = {
  '/api': {
    target: 'http://localhost:8080/',
    pathRewrite: {
      '^/api': '/api',
    },
    changeOrigin: true,
  },
};

const isDevelopment = process.env.NODE_ENV !== 'production';

app
  .prepare()
  .then(() => {
    const server = express();

    server.use(express.json());
    server.use(express.urlencoded({ extended: false }));
    if (isDevelopment) {
      console.log('ok');
      server.use('/api', createProxyMiddleware(apiPaths['/api']));
    }

    server.all('*', (req, res) => {
      return handle(req, res);
    });

    server.listen(port, (err) => {
      if (err) throw err;
      console.log('> Ready on http://localhost:' + port);
    });
  })
  .catch((ex) => {
    console.error(ex.stack);
    process.exit(1);
  });


您的请求不应该是发送到
/api/email
(带前导的
/
)吗?
if (isDevelopment) {
  console.log('ok');
  server.use('/api', createProxyMiddleware(apiPaths['/api']));
}
server.use(express.json());
server.use(express.urlencoded({ extended: false }));