网络请求API方法
-
请求前允许取消或重定向请求
-
在发送标头之前, 收到消息头允许取消请求或修改标头
-
需要验证允许提供\修改身份验证凭据。
因此,想法是存储来自 onHeadersReceived 事件的辅助 URL 并触发chrome.tabs.reload()事件再次触发 onBeforeRequest 事件,这有助于重定向。
样品演示
以下未经测试:)演示阻止了所有FacebookURL 并将其重定向到Google收到辅助 URL 后,您可以进一步自定义它。
参考
manifest.json
确保所有权限可用并使用扩展名注册后台页面。
{
"name": "Hanlder for Navigation",
"description": "http://stackoverflow.com/questions/16928912/url-forwarding-using-chrome-webrequest-after-response-is-received",
"version": "1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"]
},
"permissions":["https://www.facebook.com/*","webRequest","webRequestBlocking","tabs"]
}
background.js
此代码阻止所有 URL 请求Facebook并将它们重定向到Google.
var _redirectURL = "";
// Register an event listener which
//traces all requests before being fired
chrome.webRequest.onBeforeRequest.addListener(function (details) {
if (_redirectURL != "") {
return {
redirectUrl: "http://www.google.co.in/" /*Redirection URL*/
};
}
}, {
urls: ["*://www.facebook.com/*"] /* List of URL's */ * *
}, ["blocking"]); // Block intercepted requests until this handler has finished
chrome.webRequest.onHeadersReceived.addListener(function (details) {
if (_redirectURL == "") {
var secondaryURL = extractSecondaryURL(details);
_redirectUrl = secondaryURL;
chrome.tabs.reload();
}
}, {
urls: ["http://*/*", "https://*/*"]
}, ["blocking", "responseHeaders"]);
Output
所有请求至Facebook被重定向到Google.