Home > Mobile >  node.js get https no responding 504
node.js get https no responding 504

Time:05-15

I am trying to make an https request in my backend node.js web app. I have the following code:

const express = require('express');
const https = require('https');

const app = express();

app.get("/", function(req, res) {

  const url = "https://www.tkmaxx.com/uk/en/women/edits/big-brand-drop/c/01240000/autoLoad?page=1"
  https.get(url, function(response) {

    console.log(response.statusCode);

  });
  res.send("running test")
});

app.listen(3000, function() {
  console.log("Server started on port 3000");
});

I am getting the following error:

node:events:504
      throw er; // Unhandled 'error' event
      ^

Error: socket hang up
    at connResetException (node:internal/errors:691:14)
    at TLSSocket.socketOnEnd (node:_http_client:466:23)
    at TLSSocket.emit (node:events:538:35)
    at endReadableNT (node:internal/streams/readable:1345:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) 
Emitted 'error' event on ClientRequest instance at:
    at TLSSocket.socketOnEnd (node:_http_client:466:9)
    at TLSSocket.emit (node:events:538:35)
    at endReadableNT (node:internal/streams/readable:1345:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {   code: 'ECONNRESET' }

Anyone know what's going on? Is the issues related to request headers or user agent? How can I set that?

CodePudding user response:

The request is only accepted by the remote server if it has an Accept header and also Connection: keep-alive. (These are headings a browser typically sets.)

https.get("https://www.tkmaxx.com/uk/en/women/edits/big-brand-drop/c/01240000/autoLoad?page=1", {
  headers: {
    accept: "text/html",
    connection: "keep-alive"
  }
}, function(response) {...});

(Perhaps this is a mechanism which the remote server employs to guard against requests made by clients other than browsers?)

  • Related