如果指定了转发到其他网址的网址,获取结束网址的好方法是什么?
例如,如果我有缩短的网址:http://bit.ly/900913
,有什么方法可以确定这最终会转发到http://www.google.com
?
我正在使用javascript。我不确定这是否可以使用jQuery以某种方式完成(可疑,因为结束URL可能不会返回jsonp内容)或者是否存在某种我可以使用的Web服务。
谢谢!
答案 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-(注意结尾处的连字符),您将收到包含完整网址的回复。