允许基于文档URL的Web请求

时间:2016-07-04 13:50:11

标签: javascript google-chrome google-chrome-extension

在我的扩展程序中,我正在尝试识别作为特定页面的一部分加载的请求。例如,如果页面:

https://www.arandomwebsite.com

加载以下资源:

https://www.arandomwebsite.com/js/app.js
https://www.arandomwebsite.com/css/style.css

并发出一些API请求:

https://www.arandomwebsite.com/api/users

使用chrome.webRequest.onBeforeRequest,我想知道www.arandomwebsite.com/js/app.js是从www.arandomwebsite.com加载的chrome.tabs

我尝试使用chrome.tabs来获取标签网址。由于onUpdated是异步的,我使用onRemovedchrome.webRequest.onBeforeRequest来跟踪标签更改。但是,由于chrome.tabs.onUpdated可以在var allowedURL = "https://www.arandomwebsite.com/" var tabs = {}; chrome.tabs.query({}, function(tabs) { tabs.forEach(function(tab) { tabs[tab.id] = tab; }); }); chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { tabs[tab.id] = tab; }); chrome.tabs.onRemoved.addListener(function(tabId) { delete tabs[tabId]; }); chrome.webRequest.onBeforeRequest.addListener(function (details) { return checkURL(details); }, { urls: ['<all_urls>'] }, ['blocking']); function checkURL(details) { if(details.type === 'main_type') { if(details.url === allowedURL) { // Allow the request return { cancel: false } } else { // Block the request return { cancel: true } } } else { if(tabs[details.tabId].url === allowedURL) { // Allow the request return { cancel: false } } else { // Block the request return { cancel: true } } } } 之前触发,但这不起作用。

text/plain

有更好的方法吗?

0 个答案:

没有答案