Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I can understand the Firefox extension as being something laudable, sure. But an HTTP API? That seems kind of random, given that the URL shorteners work with 30x HTTP responses. I mean, you just need to request the short URL and read out the Location header of the 30x response. It seems... convoluted to go via an additional server.


Good point - what I've done is allow you to piggyback more than one lookup onto a single request. so the plugin will batch them in groups of 4. does that make sense?


Well, on the server you're still starting N requests based on my batch request. I guess combined with caching that can make sense, yes. Even so, I'd probably want to implement my own [1] when setting up my own web app for reliability/trust reasons, and because of same-origin restrictions on client-side scripting. (XHR does support not following redirects, but it's kind of pointless with same-origin policy)

[1] I did exactly that for http://tweetoftheyear.com/ in clojure:

  (defn lookup-redirect [url]
    (try
      (let
        [response (http-client/url-do url "HEAD" {:follow-redirect false})]
        (when (#{301 302 303 307} (:return-code response))
          (first (get (:header response) "Location"))))
      (catch java.lang.Throwable t nil)))


I thought so, and I do cache everything nicely in memcache and db.

Also it's hard or maybe even impossible? to reliably fetch arbitrary short url using javascript - exposing it as a simple json api makes this easy.


Yeah, it's only possible on the same hostname as the page you're on, which limits the usefulness and makes the server-side lookup necessary. The JSON solution will only work via a foreign host with a <script> tag as far as I know, which again is something of a trust issue.


nice - I've been meaning to learn a bit of clojure. I hear your point on wanting to set up your own - and as you've shown it is easy to do.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: