在Chrome扩展程序中重定向后获取结束URL

时间:2016-05-07 18:53:19

标签: javascript jquery google-chrome-extension

首先,我是制作Chrome扩展程序的新手,所以不要以为我知道很多。对于扩展程序,我要求用户能够右键单击链接,选择上下文菜单项,并且扩展程序需要发送该链接的最终 URL。 / p>

特别是亚马逊联盟链接。例如,以下内容:

http://amzn.to/1VO7dlp

需要转换为:

http://www.amazon.com/gp/product/0470281731/ref=as_li_ss_tl?ie=UTF8&fpl=fresh&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=desktop-1&pf_rd_r=0WRZW1V7VVDJWS54WCM4& ..... blah blah blah

我环顾四周,无法找到答案。我是SOL吗?

到目前为止我的代码非常基本:

//background.js

chrome.runtime.onInstalled.addListener(function() {
chrome.contextMenus.create({
    title: 'Add this Link',
    id: 'linkContext',
    contexts: ['link'],
 });
}); 

chrome.contextMenus.onClicked.addListener(function(data, tab) {
    if (data.menuItemId === "linkContext") { 
      chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, 
          {
            linkUrl: data.linkUrl,
          }, 

          function(response) {
            alert(response.host);
          });
      });
    }
});


chrome.runtime.onMessage.addListener(
//content_script.js

function(request, sender, sendResponse) {
    if (request.linkUrl){

        pathArray = request.linkUrl.split( '/' );
        protocol = pathArray[0];
        host = pathArray[2];
        url = protocol + '//' + host;

        sendResponse({host: host});
    }
});
//manifest.json

{
  "name": "jQuery DOM",
  "manifest_version": 2,
  "version": "1.0",
  "description": "Manipulate the DOM when the page is done loading",
  "browser_action": {
    "name": "Manipulate DOM",
    "icons": ["icon.png"],
    "default_icon": "icon.png"
  },

  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },

  "permissions": [
    "contextMenus"
  ],

  "content_scripts": [ {
    "js": [ "jquery.min.js", "content_script.js" ],
    "matches": [ "http://*/*", "https://*/*"]
  }],

  "web_accessible_resources":[
    "menu.html",
    "menu.css"
  ]
}

就像我说的那样,我对此很陌生,所以我不确定如何继续。我想对"最终网址"进行一些解析。所以我可以向用户提供有关它的信息。 I.E.会员ID。但为此,我无法使用上面的缩短链接。

1 个答案:

答案 0 :(得分:0)

由于重定向是服务器回复给您的响应,您可以阅读标题字段并查看您的初始网址重定向到的网址。

在这种情况下,我刚测试在Chrome中打开一个新标签页,然后打开“网络”标签并导航到您的初始网址。然后,在显示结果页面的完整URL之前,我看到了两个单独的重定向(http状态代码301)。

您也可以在代码中执行此操作,以便能够访问最终的URL。 :)