使用javascript,如何在img src上进行302重定向后获得最终结果URL
With javascript, how do you get final result URL after 302 redirect on img src?
如果页面中有一个img标记,它显示的最终图像是在302重定向后出现的,那么有没有办法使用javascript来获取重定向后的最终URL?在img.src上使用javascript只获取第一个URL(页面中的内容),而不是重定向到的内容。
下面是一幅jsfiddle插图:http://jsfiddle.net/jfriend00/Zp4zG/
不,这是不可能的。src
是一个属性,它不会改变。
我知道这个问题很旧,已经被标记为已回答,但我试图回答的另一个问题被标记为该问题的重复,并且我在任何现有答案中都看不到任何迹象表明可以通过HTTP标头获得真实的URL。一个简单的例子(假设页面上只有一个图像标签)是这样的。。。
var req = new XMLHttpRequest();
req.onreadystatechange=function() {
if (req.readyState===4) {// && req.status===200) {
alert("actual url: " + req.responseURL);
}
}
req.open('GET', $('img').prop('src'), true);
req.send();
如果您对使用第三方代理持开放态度,这是可以做到的。显然,不是一个javascript解决方案这个解决方案使用cors-anywhere的代理服务。herokuapp.com。只是为那些对代理持开放态度但不愿意在后端实现的人添加了这个解决方案。
这是原小提琴的叉子
$.ajaxPrefilter( function (options) {
if (options.crossDomain && jQuery.support.cors) {
var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
options.url = http + '//cors-anywhere.herokuapp.com/' + options.url;
//options.url = "http://cors.corsproxy.io/url=" + options.url;
}
});
$.ajax({
type: 'HEAD', //'GET'
url:document.getElementById("testImage").src,
success: function(data, textStatus, request){
alert(request.getResponseHeader('X-Final-Url'));
},
error: function (request, textStatus, errorThrown) {
alert(request.getResponseHeader('X-Final-Url'));
}
});
基于http://jsfiddle.net/jfriend00/Zp4zG,此片段适用于Firefox 17.0:
alert(document.getElementById("testImage").baseURI)
它在Chrome中不起作用。未测试任何其他内容-
下面是我找到的一个解决方法。但只有当图像在同一个域上时,它才能工作,否则你会得到一个空字符串:
var img = document.getElementById("img");
getSrc(img.getAttribute("src"), function (realSrc) {
alert("Real src is: " + realSrc);
});
function getSrc(src, cb) {
var iframe = document.createElement("iframe"),
b = document.getElementsByTagName("body")[0];
iframe.src = src;
iframe.className = "hidden";
iframe.onload = function () {
var val;
try {
val = this.contentWindow.location.href;
} catch (e) {
val = "";
}
if (cb) {
cb(val);
}
b.removeChild(this);
};
b.appendChild(iframe);
}
http://jsfiddle.net/infous/53Layyhg/1/
相关文章:
- safari扩展中的重定向url
- 将重定向URL链接添加到JS函数
- 使用phonegap重定向URL
- 在php中htaccess重定向url后,无法加载css和js
- 如何在重定向 URL 的标头中拦截和获取位置
- 如何使用javascript查询重定向url
- 如何使用javascript获取重定向url
- 重定向(URl)提供控制器视图 URI模式
- 带有Authorization标头的JavaScript重定向URL
- 从数组随机重定向URL
- 在重定向URL上使用HubSpot表单数据
- 如何在 Javascript 或 jQuery 中重定向 URL
- 快速发送文件和重定向 URL
- 使用javascript基于登录用户重定向URL链接
- 如何使用javascript完全重定向URL
- JavaScript var 值,重定向 URL 为空
- 如何在WordPress中即时重定向URL
- 在选项卡更改时重定向 URL
- 已更新:从另一个页面重定向 url 传递参数
- 从页面文档文本重定向 URL