HTTP Request node fails with getaddrinfo or timeout exceeded with URLs that are accessible via browser

Describe the problem/error/question

I’ve built simple workflow to check availability of some websites using https request node doing GET operation. Websites like www.google.com and other sites are working, but some specific corporate sites are failing with error

What is the error message (if any)?

message:getaddrinfo EAI_AGAIN .com
name:Error
stack:Error: getaddrinfo EAI_AGAIN websiteremoved.com \n at Function.AxiosError.from

2nd error: URL tired:https://zifzdesk.gavstech.com
message:timeout of 10000ms exceeded
name:AxiosError
stack:AxiosError: timeout of 10000ms exceeded\n at RedirectableRequest.handleRequestTimeout (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.8.3/node_modules/axios/lib/adapters/http.js:657:16)\n at RedirectableRequest.emit (node:events:524:28)\n at Timeout. (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/follow-redirects@1.15.9/node_modules/follow-redirects/index.js:221:12)\n at listOnTimeout (node:internal/timers:581:17)\n at processTimers (node:internal/timers:519:7)\n at Axios.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/axios@1.8.3/node_modules/axios/lib/core/Axios.js:45:41)\n at runNextTicks (node:internal/process/task_queues:60:5)\n at processTimers (node:internal/timers:516:9)\n at invokeAxios (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_openai@4.78.1_encoding@0.1.13_zod@3.24.1_/node_modules/n8n-core/src/execution-engine/node-execution-context/utils/request-helper-functions.ts:206:10)\n at proxyRequestToAxios (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_openai@4.78.1_encoding@0.1.13_zod@3.24.1_/node_modules/n8n-core/src/execution-engine/node-execution-context/utils/request-helper-functions.ts:656:20)\n at Object.request (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_openai@4.78.1_encoding@0.1.13_zod@3.24.1_/node_modules/n8n-core/src/execution-engine/node-execution-context/utils/request-helper-functions.ts:1698:4)
code:ECONNABORTED

Please share your workflow

{
  "nodes": [
    {
      "parameters": {
        "url": "=https://{{ $json.externalIp }}",
        "options": {
          "timeout": 10000
        }
      },
      "id": "4855c43a-f335-4f7f-9775-8f4aed7c0577",
      "name": "Check URL",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        600,
        340
      ],
      "typeVersion": 4.2,
      "alwaysOutputData": false,
      "onError": "continueErrorOutput"
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -60,
        340
      ],
      "id": "c7754709-eaac-47b2-9fe2-a69bbfaf391d",
      "name": "When clicking ‘Execute workflow’"
    },
    {
      "parameters": {
        "method": "PUT",
        "url": "={JIRA_API_URL}/jsm/assets/workspace/{YOUR_WORKSPACE_ID}/v1/object/{{ $('Filter external IP from JIRA assets').item.json.objectId }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"attributes\": [\n    {\n      \"objectTypeAttributeId\": \"406\",\n      \"objectAttributeValues\": [\n        {\n          \"displayValue\": \"Available\",\n          \"searchValue\": \"Available\",\n          \"referencedType\": false,\n          \"value\": \"Available\"\n\n        }\n      ]\n    }\n  ],\n  \"objectTypeId\": \"23\",\n  \"avatarUUID\": \"\",\n  \"hasAvatar\": false\n} ",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        820,
        240
      ],
      "id": "e3c0980f-07d9-4113-8d48-4714a05a18b7",
      "name": "Update JIRA asset status as Available",
      "credentials": {
        "httpBasicAuth": {
          "id": "kQpclhUq6hCyJMwT",
          "name": "Unnamed credential 2"
        }
      }
    },
    {
      "parameters": {
        "method": "PUT",
        "url": "={JIRA_API_URL}/jsm/assets/workspace/{YOUR_WORKSPACE_ID}/v1/object/{{ $('Filter external IP from JIRA assets').item.json.objectId }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"attributes\": [\n    {\n      \"objectTypeAttributeId\": \"406\",\n      \"objectAttributeValues\": [\n        {\n          \"displayValue\": \"Unavailable\",\n          \"searchValue\": \"Unavailable\",\n          \"referencedType\": false,\n          \"value\": \"Unavailable\"\n\n        }\n      ]\n    }\n  ],\n  \"objectTypeId\": \"23\",
  \"avatarUUID\": \"\",\n  \"hasAvatar\": false\n} ",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        820,
        440
      ],
      "id": "465c1cce-ad41-42fe-a59d-4591b8674f2c",
      "name": "Update JIRA asset status as Unavailable",
      "credentials": {
        "httpBasicAuth": {
          "id": "kQpclhUq6hCyJMwT",
          "name": "Unnamed credential 2"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// Get the incoming JSON data.\nconst incomingJson = $input.item.json;\n\n// The data might be the object itself, or an array containing it.\n// This line handles both cases to find the object we need to process.\nconst data = Array.isArray(incomingJson) ? incomingJson[0] : incomingJson;\n\n// Safely check if the data and the necessary properties exist.\nif (!data || !data.objectTypeAttributes || !data.values) {\n  // If the data is invalid, return an item with an error message to prevent a workflow crash.\n  return [{ json: { error: \"Input data is not in the expected format or is empty.\" } }];\n}\n\n// Dynamically find the ID for the \"External IP\" attribute from the metadata.\nconst ipAttributeType = data.objectTypeAttributes.find(attr => attr.name === 'External IP');\n\n// If the \"External IP\" attribute doesn't exist in the object schema, stop and return an error.\nif (!ipAttributeType) {\n    return [{ json: { error: \"The attribute 'External IP' could not be found in the object schema.\" } }];\n}\nconst ipAttributeId = ipAttributeType.id;\n\nconst results = [];\n\n// Loop through each device object in the 'values' array.\nfor (const item of data.values) {\n  // Find the attribute that matches the External IP's ID.\n  const externalIpAttribute = item.attributes.find(attr => attr.objectTypeAttributeId === ipAttributeId);\n\n  // If the attribute and its value exist, extract the required information.\n  if (externalIpAttribute && externalIpAttribute.objectAttributeValues.length > 0) {\n    const ipValue = externalIpAttribute.objectAttributeValues[0].value;\n    \n    // Add the objectId, its specific attributeId, and the IP value to our results.\n    results.push({\n      json: {\n        objectId: item.id,\n        objectTypeAttributeId: externalIpAttribute.objectTypeAttributeId,\n        externalIp: ipValue\n      }\n    });\n  }\n}\n\n// Return the newly created array of result objects.\nreturn results;"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        380,
        340
      ],
      "id": "1ab59a86-311e-4c79-af52-812b1ccdf123",
      "name": "Filter external IP from JIRA assets",
      "alwaysOutputData": true
    },
    {
      "parameters": {
        "method": "POST",
        "url": "{JIRA_API_URL}/jsm/assets/workspace/{YOUR_WORKSPACE_ID}/v1/object/aql?",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "qlQuery",
              "value": "objectTypeId = 116"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        160,
        340
      ],
      "id": "b350add6-53aa-4a7b-9251-e0555d9e3108",
      "name": "JIRA asset API call",
      "credentials": {
        "httpBasicAuth": {
          "id": "kQpclhUq6hCyJMwT",
          "name": "Unnamed credential 2"
        }
      }
    },
    {
      "parameters": {
        "method": "POST",
        "url": "{JIRA_API_URL}/jsm/ops/api/{YOUR_CLOUD_ID}/v1/alerts",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Accept",
              "value": "application/json"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"message\": \"External Service: {{ $json.label }} is reported down during scheduled health check\",\n  \"description\": \"NOC External URL monitoring service noticed failures during the scheduled health check. CMDB Relationship: {{ $json.objectKey }} and ServiceName: {{ $json.label }}\",\n  \"priority\": \"P1\",\n  \"responders\": [\n    {\n      \"id\": \"d24b7f70-6d67-4b27-a636-529416a795f5\",\n      \"type\": \"team\"\n    }\n  ]\n}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1040,
        440
      ],
      "id": "bd07bf43-70d6-4477-a423-d04ccfb72fb1",
      "name": "JIRA Alert to NOC",
      "credentials": {
        "httpBasicAuth": {
          "id": "kQpclhUq6hCyJMwT",
          "name": "Unnamed credential 2"
        }
      }
    }
  ],
  "connections": {
    "Check URL": {
      "main": [
        [
          {
            "node": "Update JIRA asset status as Available",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update JIRA asset status as Unavailable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "JIRA asset API call",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update JIRA asset status as Available": {
      "main": [
        []
      ]
    },
    "Update JIRA asset status as Unavailable": {
      "main": [
        [
          {
            "node": "JIRA Alert to NOC",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter external IP from JIRA assets": {
      "main": [
        [
          {
            "node": "Check URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JIRA asset API call": {
      "main": [
        [
          {
            "node": "Filter external IP from JIRA assets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "7376eb68922a7b77c4537a1b56004a9c6127acaa690e84b2ad9719ebf95fe31b"
  }
}

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)


## Share the output returned by the last node
<!-- If you need help with data transformations, please also share your expected output. -->

## Information on your n8n setup
- **n8n version:*1.95.3*
- **Database (default: SQLite):*Default cloud instance*
- **n8n EXECUTIONS_PROCESS setting (default: own, main):*Unsure*
- **Running n8n via (Docker, npm, n8n cloud, desktop app):*cloud*
- **Operating system:*N/A - Cloud hosted*

Regarding https://zifzdesk.gavstech.com webpage - this page requires javascript engine and you will not be able to GET it easily with just HTTP Request node.

You will likely need tools like Puppeteer, Playwright, Browserless, ScraperAPI, ScrapingBee, or your own JS rendering proxy.