chrome-extension:如何在重定向发生时从选项卡中检测和检索网址?

时间:2017-10-17 19:09:57

标签: google-chrome-extension

刚开始使用chrome - 扩展开发。我试图从新创建的选项卡中检索网址但我的预期网址来自服务器作为响应,其状态代码为302,浏览器重定向到它。我尝试使用chrome.tabs.onUpdated.addListener(),但它没有检测到302的URL。我在chrome.tabs API中搜索,我没有看到任何重定向事件。检测选项卡中是否发生任何重定向并从该对象获取URL的最佳方法是什么?

我的用例是,当用户点击一个按钮时,它会打开一个带有特定网址的新标签,因为这个网址受SSO保护,将通过SSO跳舞,最后进入目标网页。在SSO舞蹈期间有3个重定向发生在服务目标页面之前,我试图检测并检索重定向过程中的一个URL。

P.S:这是我的第一个问题,我很高兴能成为这个社区的一员。提前谢谢。

Update1:​​我尝试过使用chrome.webRequest.onBeforeRedirect.addListener

的manifest.json



{
  "name": "CatBlock",
  "version": "1.0",
  "description": "I can't has cheezburger!",
  "permissions": ["alarms", "webRequest", "webRequestBlocking", "activeTab", "tabs",
                  "https://*/*"],
  "background": {
    "scripts": ["background.js"]
  },

  "manifest_version": 2
}




background.js



chrome.webRequest.onBeforeRequest.addListener(
  function(info) {
    console.log("Cat intercepteddd: " + info.url);
   
  });

chrome.webRequest.onBeforeRedirect.addListener(
		  function(info) {
		    console.log("Cat intercepteddd: " + info.url);
		    
});

chrome.webRequest.onResponseStarted.addListener(
		  function(info) {
		    console.log("Cat intercepteddd: " + info.url);
		  
});




1 个答案:

答案 0 :(得分:0)

const responseListener = function(details) {
  const headers = details.responseHeaders;
  for (let i = 0; i < headers.length; i++) {
   if (headers[i].name == "location") {
    console.log("redirectURL:" + headers[i].value);
   }
  }
  return { responseHeaders: newHeaders};
};

chrome.webRequest.onHeadersReceived.addListener(
responseListener,{urls: [URL_TO_DETECT]}, ["blocking", "responseHeaders"]);

通常在响应标头上会捕获303个重定向,使用以上代码从响应标头获取重定向网址,请确保将代码包含在background.js中