[Fixed] 401 Unauthorized error in Express API post request

Issue

I am trying to develop the logic for a POST route handler in Express. I put the following together:

const headers = {
  "Authorization":"TS Token asdfghjk-asdf-4567-fghjkl; tid=onfido-token";
  "content-type": "application/json"
};

const params = {
  "policy_request_id": "onfido_applicantandtoken"
};

app.get("/get_stuff", (req, res) => {
    axios
      .post("https://third/party/api", {
        headers,
        params
      })
      .then(function (response) {
        res.json(response.data);
      })
      .catch(function (error) {
        res.json("Error occured!");
      });
  }
});

I keep getting a 401 Unauthorized for the above. On Postman it works, but with the logic above I get a 401 Unauthorized, specifically in the logs I would get Header 'Authorization' not found or Could not parse authorization header. So I am unclear as to what could be going on with the header.

A lot of posts talk about req.headers, but my req.headers does not have the Authorization token and content-type in there, it has some other token that the API I am trying to connect to I assume needs to reach out to another API.

I have refactored it to look like this:

app.get("/get_stuff", (req, res) => {
    axios
      .post("https://third/party/api", params, headers)
      .then(function (response) {
        res.json(response.data);
      })
      .catch(function (error) {
        res.json("Error occured!");
      });
  }
});

And I am still getting the same exact error.

To be clear the params is not something that gets passed into the URL on Postman, but rather the body of the postman request.

Solution

I was able to get it to successfully connect by declaring a global axios default like so:

axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;

as documented here:

https://www.npmjs.com/package/axios#user-content-config-defaults

Leave a Reply

(*) Required, Your email will not be published