Получить переадресованный URL из исходного URL? - PullRequest
3 голосов
/ 03 июля 2011

Каков хороший способ получить конечный URL-адрес, если ему передается URL-адрес, который перенаправляется на другой URL-адрес?

Например, если у меня был сокращенный URL-адрес: http://bit.ly/900913, что является хорошим способом?чтобы определить, что это в конечном итоге переходит к http://www.google.com?

Я использую JavaScript.Я не уверен, что это можно сделать каким-либо образом с помощью jQuery (сомнительно, поскольку конечный URL, вероятно, не возвращает содержимое jsonp) или есть какой-то веб-сервис, который я могу использовать.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 03 июля 2011

Для bit.ly, в частности, вы можете использовать bit.ly API для выполнения вызова JSONP с использованием JavaScript для расширения рассматриваемых URL-адресов bit.ly.

В частности, вы бы использовали 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;}); и выполните HEAD-вызов для URL-адреса, чтобы увидеть, куда указывает Location.

Вот основные принципы того, как вы будете делать это в 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 голос
/ 03 июля 2011

Bitly предоставляет услугу предварительного просмотра. Если вы посетите http://bit.ly/900913- (обратите внимание на дефис в конце), вы получите ответ с полным URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...