要知道縮短網址後面的真實主機的唯一方法是實際嘗試獲取網址,然後查看是否獲得302重定向並查看重定向網址是什麼。
由於您通常無法從瀏覽器JavaScript中加載跨網址網址,因此您可能需要一臺服務器爲您完成此操作並將結果返回給您。其他
一種選擇是,如果鏈接縮短是一個已知的一個,你必須API訪問權限,那麼你就可以查詢該API看到一個給定的縮短鏈接是做什麼用的快捷方式。例如,bit.ly有這個api http://dev.bitly.com/data_apis.html。 API通常允許跨源訪問,因此您可以從瀏覽器訪問它。
由於您無法自信地對所有可能的鏈接縮寫進行API訪問,因此此策略僅適用於您準備的特定鏈接縮寫。任何鏈接縮短器的一般解決方案都需要使用服務器直接訪問URL以獲取重定向。
例如,這裏有一個簡單的node.js程序,獲取一個URL並檢查是否返回重定向響應,並得到重定向URL如果是這樣。
var request = require("request");
request({url: "https://goo.gl/lWyZ5B", followRedirect: false}, function(error, response, body) {
console.log(response.statusCode);
if (response.statusCode >= 300 && response.statusCode < 400) {
console.log(response.headers.location);
}
});
這產生這樣的輸出:
301
https://www.youtube.com/watch?v=ZrU_tt4R3xY
這可以包裹在將採取URL作爲請求並返回得到的URL的服務器。
你想使用ajax嗎? –
@tuananh啊,這是一個好主意。而且我實際上需要此功能來進行Chrome擴展。所以也許這可以幫助「跨域」腳本? – Fenwick