There has been quite a lot of debate for a long time in the Javascript community as to which HTTP customer is the most stylish when it comes to ease of use, among them, Axios would surely rank among the top 3 for a lot of inventors. This composition will show you how to use Axios to make HTTP requests and pass HTTP heads with your requests. We’ll also take a close look at how HTTP heads work and why they’re important. 

Why would you want to use Axios over node-fetch? 

Node – fetch is the server-side perpetration of the Fetch API specification that attempts to regularize what it means to make an HTTP request and the colorful delineations of the terms involved. Axios is an HTTP client-like, node-fetch but because Axios has been around for a lot longer, a lot of inventors tend to use Axios over cost. Many intriguing reasons as to why you might want to use Axios over node-fetch might be.

Helpful serviceability like creating interceptors or a case: While it’s possible to write your own law to produce interceptors or an applicable case with node-fetch, it’s more or less redundant trouble when compared to using the built-in features that Axios provides. 

Dropping requests and timeouts: node-fetch and the browser cost attempt to break aborting requests ( thus canceling a pledge) by using what’s known as an AbortController. Using the AbortController is relatively circumlocutory as opposed to the API that Axios provides. Also, timeouts have to be enforced by hand when using node-fetch. 

Automatic data transformation: Axios transforms your POST request body to a string for illustration, without being explicitly told to, unlike knot- cost. 

Sending HTTP heads with Axios 

Sending HTTP heads when making HTTP requests is a veritably common task. Axios provides an API that’s veritably analogous to knot-cost transferring HTTP heads. There are two ways to make HTTP requests in Axios, one is to give a config object to Axios (). The alternate one is to use the request system aliases that Axios gives that would follow a general syntax of Axios. () to which you would pass a url and a config object as arguments. The ultimate tends to be used more frequently as it’s intuitive. 


const axios = require("axios");

const config = {
    headers: {
        "Referer": "",
        "Referrer-Policy": "strict-origin-when-cross-origin"

    .get("", config)
    .then((response) => console.log(
    .catch((error) => console.log(error.response));

Calling axios.get or Axios returns a promise that resolves to a Response object that has a schema like this. data is one of the properties in this object, and quite literally contains the data that the server responded with. If, for some reason, there was some kind of error, then the promise will reject with an error object that contains a response property which again follows the schema that was mentioned earlier.

The config object has a schema like this and allows you to do far more than just send HTTP headers. Headers like Referer are imperative to implement features that depend on knowing where traffic is coming from like logging or analytics.

However, do beware though Referer can introduce privacy risks in situations where you send sensitive data alongside the referrer URL. A very good way to counter issues like this is to use a Referrer-Policy and of course, design your application sensibly. 

Similar to sending an HTTP GET request, if you wanted to send for example a POST request, you would either use the respective request method alias with your POST data and config object or just pass a config object to axios() with the method property set to POST:

const axios = require("axios");

const newPost = {
    title: "Scrapingpass is awesome!",
    body: "Learning to set HTTP headers...",
    userId: 1,

const config = {
    headers: {
        "Content-type": "application/json; charset=UTF-8",

    .then((response) => console.log(
    .catch((error) => console.log(error.response));


Sending the applicable HTTP heads along with its HTTP request is important and at times is a security demand, as these heads give critical insight to what’s being sent to the server which helps to identify and prize information out of the HTTP request duly. 

One similar illustration is sending the correct Content-Type title. The browser, for illustration, takes a look at the Content-Type title to know what exactly to do with the data that has been entered. You can read further about the significance of Content-Type and how browsers evolved to fight security issues related to it then. 

What exactly are HTTP headers? 

HTTP headers are relatively simple fresh information that you pass along with your HTTP request or response so that the customer or the server that receives it can handle the request or response duly. There are different types of HTTP headers and the most common way to group them is by looking at their intended environment. 

General Headers– Heads common to both requests and responses, and have nothing to do with the factual data that has been transferred or entered. 

Request Headers-Contains critical information about the customer that requested it and on what coffers are being requested. 

Response Headers-Contains any additional information related to where and what data is being transferred. 

Reality Headers-Contains information about the resource in question. 

Making your HTTP request look browser-like

It’s imperative, in the process of scraping the web, to make your requests look as authentic and non-bot-like as possible. One of the most common, easy, and effective ways to do so is to make use of the user-Agent header. The user-Agent header is a string that dictates the operating system, vendor, and the user agent itself. The user agent can be simply allowed as an operation that you would use to perform an HTTP request. 

Keep in mind still to not scrape the list, or at least if you do, to make sure to not abuse the service as the website identifies that they’ve had issues with inaptly written bots. 

While stoner agents are one of the easiest ways to mock an actual browser, there’s generally further work involved if you want to increase your chance to pass off as an actual browser. A couple more headers like the:

Accept-Language title-declares what language the customer or the server making the request is able to understand. 

Accept- encoding header-declares what kind of contraction algorithm to use on the content. 

can really improve your chances. 

Sending headers like that along with your HTTP request makes it more likely for the request to pass off as a real request made by an authentic browser. Still, however, as ways like browser fingerprinting become extensively adopted each day, your sweats may just not serve. Browser fingerprinting does still also calculate on heads to a certain aspect, but also makes use of eyefuls and drawing on canvas ( called canvas characteristic) to uniquely identify a user. 

Still, you’ll quickly realize how effective it’s to just use an HTTP customer If you compare the difference between submitting a form with Puppeteer and doing the request yourself with an HTTP customer like Axios. 

Was this post helpful?