要知道缩短网址后面的真实主机的唯一方法是实际尝试获取网址,然后查看是否获得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