例如,您在google.com中搜索某些内容。您点击结果链接,然后您将重定向到“https://www.google .....”然后转到正确的网站。我怎么能在我来到正确的网站后获取网址('https://www.google .....')。
document.referrer
无法帮助。我只想提供“https://www.google.com/”,而我想获得完整的网址。
答案 0 :(得分:0)
执行此操作的最佳方法可能是在重定向之前使用chrome.webRequest
获取旧的引荐来源。
这样做的一种方法是:
var requestIds = [];
chrome.webRequest.onBeforeRequest.addListener(function(details){
var temp = {requestId:details.requestId,url:details.url}
requestIds.push(temp);
},
{urls: ["*://www.google.com/url*"]});
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
requestIds.forEach(function(v,i,a){
if(parseInt(details.requestId)-parseInt(v.requestId)<=2){
details.requestHeaders.forEach(function(val,ind,arr){
if(val.name =="Referer")
val.value = v.url;
});
requestIds.splice(i,1);
}
});
},
{urls: ["<all_urls>"],types:["main_frame"]},["requestHeaders","blocking"]);
您还需要"webRequest","webRequestBlocking"
来获取清单文件中的权限。
这样做会拔出网址,然后将其添加到近似结果调用的请求标头中。我原本打算在重定向期间显示requestId
保持不变,但它不是传统的重定向。据我所知,没有办法将第一个请求与下一个请求相关联,因为它将具有非常接近的id,因此<= 2
。无论你想用它做什么,第一个监听器都会为你提供你想要的url,它可能很难将它与结果页面联系起来。
请注意,虽然这会更改引荐来源标头,但它不会显示在开发工具中或显示为document.referrer
。