- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 JavaScript API 开发一个 Chrome 扩展程序,其中我尝试在 URL 与 Web 请求 URL 模式匹配时重定向该 URL
how chrome.webrequest.onebforerequest calling itsself multiple times
backgorund.js
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
var host="https://api.answerme.com/2.2/questions/345797";
var x = new XMLHttpRequest();
x.open('GET',host,false);
x.onload = function() {
// this function gives me URL and store into "redirectAnswerUrl" global variable (working fine)
setRedirectedToAnswer(x.responseText);
};
x.send();
//this working fine output:-www.answerme.com/quetion/78784#45545
alert("redirectAnswerUrl"+redirectAnswerUrl);
if(redirectAnswerUrl!=""){
//but this redirectAnswerUrl has same pattern of default urls that is above output and manifest url
return {redirectUrl: redirectAnswerUrl}
}
},
{
//setting url which we gonna match during first load
urls: [
"*://answerme.com/questions/*",
"*://www.answerme.com/questions/*"
]
},
["blocking"]
);
manifest.json
{
"name": "Demo",
"description": "Demo",
"version": "0.1",
"manifest_version": 2,
"browser_action": {
"default_icon": "logo.png",
"default_popup": "window.html"
},
"background": {
"scripts": ["background.js"]
},
"permissions": [
"activeTab", "tabs", "webRequest",
"*://answerme.com/questions/*",
"*://www.answerme.com/questions/*"
"webRequestBlocking", "storage"
],
"icons": {
"16": "logo.png",
"128": "logo.png"
}
}
问题:在 Web 请求上检查的相同 URL 模式(即 API 输出 URL)具有“www.answerme.com/quetion/78878#787878”和 Web 请求 URL有“www.answerme.com/quetion/searchquery”
在这种情况下,当我们获取 www.answerme.com/questions/searchquery
时,页面将重定向到 http://www.answerme.com/questions/7847859# 748555
,但问题是:我用来检查 URL 的模式有 *
来指示 URL 可以以任何协议(protocol)开头,并且其第一个属性以 quetions
开头>。这与重定向 URL http://www.answerme.com/questions/7847859#7848488
匹配,因此会陷入僵局(重复重定向)。我再次收到相同的 URL 模式请求(redirect url= www.asswerme.com/quetion/7878#7878 并且 list 文件上的 webrequest url 有 www.asswerme.com/quetion/*
),因此我决定检查 URL 是否以数字结尾(网络请求 list ),以便我可以轻松地将它们重定向到 http://www.answerme.com/questions/7847859#14524
,而无需任何歧义。
最佳答案
您可以使用RegExp
检查details.url
是否仅以数字字符结尾
if (!/^\d+$/.test(details.url.split("/").pop())) {
// `details.url` does not end with only digits, do other stuff
} else {
return {redirectUrl: "http://www.example.com/add/7847859"}
}
关于javascript - Chrome.webrequest.onBeforeRequest 多次调用自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46864162/
我正在尝试构建自己的 chrome 扩展程序,并尝试使用 onBeforeRequest 添加事件处理程序。 我的manifest.json: { "manifest_version": 2,
我看了其他有同样问题的问题,但找不到解决方案。我的 manifest.json: { "background": { "scripts": [ "js/background.js"
我正在编写一个 Chrome 扩展程序,我想将某些 URL 重定向到另一个页面。 为此,我找到了 chrome.webRequest.onBeforeRequest 事件处理程序,在文档中指出我可以返
我正在开发一个浏览器扩展,它可以根据客户需求阻止对特定网址的调用。 需要阻止的 URL 作为“localStorage”参数传递。 这是我的扩展代码: function logURL(requestD
我有以下代码: chrome.webRequest.onBeforeRequest.addListener( function(details) { return { re
我在尝试制作扩展时遇到了一些问题。该扩展程序的工作是在发出请求之前检查 URL 并阻止提供的列表中可用的 URL。 manifest.json 文件加载声明并初始化数组的 flagged.js。然后,
Chrome 一直说:“无法读取未定义的属性‘onBeforeRequest’”。我不明白为什么。 背景.html: // list .json: { "name":
我正在使用 JavaScript API 开发一个 Chrome 扩展程序,其中我尝试在 URL 与 Web 请求 URL 模式匹配时重定向该 URL how chrome.webrequest.on
我正在尝试创建一个扩展来分析在 chrome 浏览器上发出的请求,但我无法让它工作。警报永远不会触发。 list .json { "name": "Test", "description":
我正在构建一个扩展程序,如果该网址位于黑名单中,该扩展程序会重定向到 google.com。我将黑名单存储在本地文件“list.txt”中,并使用 XMLHttpRequest 检索 URL 列表。我
我在后台页面中有一个带有以下事件监听器的扩展... chrome.webRequest.onBeforeRequest.addListener( function(details){
我正在尝试创建一个 Chrome 扩展程序,该扩展程序查询外部源作为阻止或允许通过特定页面的引用。以下是我的代码的一部分。我是 JavaScript 新手,范围似乎总是让我烦恼。 chrome.web
我在 Chrome 和 FireFox 扩展中有以下内容: function webListener(requestDetails) { var asyncCancel = new Promi
chrome.webRequest.onBeforeRequest.addListener(function(details) { if (localStorage.on == '1') {
我正在制作一个小型 google chrome 扩展程序,它正在监视页面正在进行的所有调用。这个想法是记录页面的行为方式以及进行了多少次外部调用。除了我需要获取发起调用的页面的源 url 的部分外,一
我试图让 onBeforeRequest 触发,但它不会触发一次。 background page console显示错误: Invalid value for argument 1. Expecte
我正试图在谷歌浏览器扩展程序中删除此监听器以阻止 url,但我不知道如何! chrome.webRequest.onBeforeRequest.addListener( f
我在后台脚本中使用webRequest.onBeforeRequest。然后,在内容(?)脚本中,即注入(inject)到原始页面,我向该页面发出我正在检测的请求的同一 URL 发出 AJAX 请求,
这里是一个将包含“someString”的 URL 重定向到本地主机的示例,但它会在 redirectUrl 或 cancel 之前解析该 URL 的 DNS ,这样会泄露一些数据,非常不安全。 并且
在 Chrome 扩展中,我需要知道 onBeforeRequest 回调中请求的 Content-Type 是什么,因为如果 Content-Type 是 application/x-www-for
我是一名优秀的程序员,十分优秀!