从源URL获取转发的URL?

时间:2011-07-03 03:07:11

标签: javascript url url-routing

如果指定了转发到其他网址的网址,获取结束网址的好方法是什么?

例如,如果我有缩短的网址:http://bit.ly/900913,有什么方法可以确定这最终会转发到http://www.google.com

我正在使用javascript。我不确定这是否可以使用jQuery以某种方式完成(可疑,因为结束URL可能不会返回jsonp内容)或者是否存在某种我可以使用的Web服务。

谢谢!

2 个答案:

答案 0 :(得分:4)

对于bit.ly具体而言,您可以使用bit.ly API使用JavaScript进行JSONP调用以扩展相关的bit.ly URL。

具体来说,您可以使用v3/expand来电。

的伪代码:

var bitlyurl = "http://bit.ly/900913";
$.getJSON("http://api.bitly.com/v3/expand?shortUrl=" + encodeURIComponent(bitlyurl)+"&apikey=...&callback=?", function( bitlydata ){

     var endurl  = bitlydata.data.expand[0] //looks like this is where the end URL would point
});

或者,您可以关注自己服务器上的URL,并使用AJAX检查它的值。

所以,你要传递一个URL($.get("/follow?url="+bitlyurl,function(data){var endurl = data.Location;});,然后对URL进行HEAD调用,以查看位置指向的位置。

以下是您在PHP中使用它的基础知识:

<?php
$headers = get_headers($_GET["url"],1);
echo json_encode($headers);
?>

为了好玩,我在App Engine上实现了一个实时终点,以检查URL指向的位置。随意使用它!基本URL为followtheredirect.appspot.com,它需要url参数和回调参数,并在成功时在结果对象上返回location键。

示例代码:

$.getJSON("http://followtheredirect.appspot.com/?url="+encodeURIComponent('http://bitly.com/hhN7Ol')+"&callback=?",function(data){
    var location = data.location;
});

如果你发现任何错误,请告诉我:)它可能有点乱......

答案 1 :(得分:1)

Bitly提供预览服务。如果您访问http://bit.ly/900913-(注意结尾处的连字符),您将收到包含完整网址的回复。