Skip to content
Advertisement

How To Find Out Where the Short URLs Point To with Javascript

I have created a short url, let say https://my.short.link/foo, that is pointing to https://my.other.website/bar.

How can I retrieve this url with a javascript method inside the browser? (I’m using angular)

Advertisement

Answer

It will depend on how my.short.link handles processing the URL when you request it.

  • Type 1: A really basic service might use a redirection response (HTTP 302, etc).
  • Type 2: Or it might use a successful response serving an HTML page with a <meta http-equiv="refresh" ...> tag in it.
  • Type 3: Or it might use a successful response serving an HTML page doing the redirection via JavaScript.

Browser

If you mean you want to do this in a browser, you might be able to get the information for service Type 1 above, but not for other services.

As evolutionxbox says, you could try fetch, and surprisingly (to me!) if the service handles requests with a simple redirection response, you do see a new URL in the response, but it wont have the hash fragment:

fetch("https://tsplay.dev/wEv6gN")
.then(r => {
    if (!r.ok) {
        throw new Error(`HTTP error ${r.status}`);
    }
    for (const [key, value] of r.headers) {
        console.log(`${key}: ${value}`);
    }
    console.log(r.url);
})
.catch(console.error);

That URL, https://tsplay.dev/wEv6gN, redirects to https://www.typescriptlang.org/play?#code/MYewdgzgLgBAJgQygmBeGB5ARgKwKbBQB0AZgE554BeeAFAN4CwAUDGzBCALZ4BcMARgBMAZgA0LdjAA24AOb96AIgRLeSrEoC+E1u2kBLaPwDaS4EoC6uqSBL8lSm+wRksBqGVcBPfmACu0tLObFAAFgZgchD8AkRCuloAlADcLCxQ3gAOePBICAD6ANZ43mgwJd52MJk51YjIacwsJP5ghAbg8CAA6iBkRbRF-A2FlUkwTHps0niwAG4I0v656KMmRZZNUgD0O0QHLFpAA via a 302 (“Moved Permanently”) redirect response. In the code above, we only see https://www.typescriptlang.org/play?. But maybe that’s enough for your purposes.

But that won’t work for types 2 and 3 above. You’d have to be able to read and parse the HTML, and the Same Origin Policy will prevent code running on your origin from accessing that HTML. You could try opening it in an iframe (though I suspect you don’t really want to visit the page, you just want to get its URL), but the same issue applies: Even when the iframe goes to the target location, you won’t be able to access that because of the SOP.

Node.js Or Similar

If you mean in Node.js or some other non-browser environment, then:

  • For a Type 1 service, you could do an HTTP request and look at the redirection information.
  • For a Type 2 service, you could do the HTTP request, parse the HTML, and look for the tag.
  • For a Type 3, you’d need to use a headless browser (Puppeteer, etc.) to capture where it was going.
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement