How to set proxy when using axios to send requests?

Issue

I am using a package called ‘concurrently’ to run my client and server at the same time on localhost. Client runs on port 3000 while server runs on port 5000. I have set proxy in the package.json of server in the following manner:

"proxy": "https://localhost:5000"

But when I make a request from client in the following manner:

    const config = {
        headers: {
          'Content-Type': 'application/json'
        }
      };

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

It says: POST http://localhost:3000/api/users 404 (Not Found). I don’t understand why but despite setting proxy, axios keeps making request to port 3000 instead of port 5000. What is the issue?

Solution

I got it working correctly. What I did was:

1) change axios.post('/api/users', body, config); to axios.post('http://localhost:5000/api/users', body, config);

2) Then in the ‘users’ express route on the server side, add CORS functionality by installing ‘cors’ npm package, and then adding the following lines:

const router = express.Router();
...
// add these lines
var cors = require('cors');
router.use(cors()); 
...
router.post('/', async (req, res) => {
...
});

Answered By – Tarun Khare

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published