Hacker News new | ask | show | jobs
by teye 5644 days ago
"In speaking with a few colleagues, it appears Twitter is using the 301 redirect on the short URL to provide the mouseover with the full URL."

Is this just a non-technical person attempting to inject a little detail into the article? My first thought was, "How would I do this in JS?" and it took me a second to decipher that sentence.

2 comments

I think so.

I am not HTTP expert, but my understanding is that a 301 is a RESPONSE not a REQUEST.

What is most certainly happening is that Twitter is making a HEAD request to URLs to see if a redirect is happening. The http redirect is a RESPONSE of type 301 (permanent) or 302 (temporary).

And yes, I suspect this is happening somewhere that can be cached. It would be easy to tell by setting up a 301 redirect, posting it to twitter, and watching the server logs.

kind of. it's not done on the front end (js) but rather using some service on the backend.

the phrasing of that is a bit weird, but they probably test until they no longer get a 301 or 302 redirect and save the result. they print this result on the front end as a title for the link and as an HTML5 data attribute "expanded-url" on the link.

I looked at doing this using Javascript in a browser extension a while ago, and it's actually not possible to do for a couple of reasons:

  1) XHR cross domain policy prohibits requests to domains other than the domain the page loaded from
  2) the XHR GET method always follows a 301 redirect and returns the content at the URL.  The full URL is not made available.
You'd have to write something on your server that does this, and expose it to your client JS via a local URL.