Javascript chrome.webRequest.onBeforeRedirect是否不停止重定向?
我正在开发一个chrome扩展,在部分扩展中,我需要检测重定向并询问用户是否希望继续。我试着使用chrome的WebRequestAPI来实现这一点,但它似乎不能正常工作,尽管我确信我的语法是正确的。以下是相关代码:Javascript chrome.webRequest.onBeforeRedirect是否不停止重定向?,javascript,google-chrome,google-chrome-extension,webrequest,Javascript,Google Chrome,Google Chrome Extension,Webrequest,我正在开发一个chrome扩展,在部分扩展中,我需要检测重定向并询问用户是否希望继续。我试着使用chrome的WebRequestAPI来实现这一点,但它似乎不能正常工作,尽管我确信我的语法是正确的。以下是相关代码: chrome.webRequest.onBeforeRedirect.addListener(function (details) { if(details.frameId == 0){ if (confirm("This link is a redirec
chrome.webRequest.onBeforeRedirect.addListener(function (details) {
if(details.frameId == 0){
if (confirm("This link is a redirect. Do you want to continue?")){
/* do nothing and let them redirect */
}
else {
/* stop the redirect from happening */
return {cancel: true};
}
}
}, {urls: ["<all_urls>"], types: ["main_frame"]}, ["blocking"]);
chrome.webRequest.onBeforeRedirect.addListener(函数(详细信息)){
如果(details.frameId==0){
if(确认(“此链接是重定向。是否要继续?”){
/*什么也不做,让他们改变方向*/
}
否则{
/*停止重定向的发生*/
返回{cancel:true};
}
}
},{URL:[“”],类型:[“主框架”]},[“阻止”];
为什么该方法不能正确阻止?根据,不允许取消重定向
onBeforeRedirect
将要执行重定向时激发。重定向可以由HTTP响应代码或扩展触发。此事件是信息性的,并以异步方式处理它不允许您修改或取消请求。
根据,您不允许取消重定向
onBeforeRedirect
将要执行重定向时激发。重定向可以由HTTP响应代码或扩展触发。此事件是信息性的,并以异步方式处理它不允许您修改或取消请求。
Haibara是完全正确的,
onBeforeRedirect
纯粹是信息性的,但让我补充一下
onBeforeRequest
和OnBeforeSendHeader
是唯一可以执行的事件-即,只有在实际发出请求之前才能取消。这是一个定义“取消”的问题,因为请求已经发出
请注意,您可以使用
onHeadersReceived
,用于您的目的-在该事件中提供的头是用于重定向请求的头,您可以通过重定向(此时允许)到您自己的扩展页来覆盖它
不过,我也必须说,你可能在这里追捕错误的嫌疑人。据我所知,
webRequest
,这只会吸引人;任何其他重定向方法,如更改window.location
,将意味着此特定网络请求成功,然后生成后续导航,该导航对webRequest
是透明的
一直以来,HTTP 3**重定向通常用于将HTTP重写为https或将URL修改为规范URL的良性目的。Haibara是完全正确的,因为
onBeforeRedirect
纯粹是信息性的,但让我补充一点
onBeforeRequest
和OnBeforeSendHeader
是唯一可以执行的事件-即,只有在实际发出请求之前才能取消。这是一个定义“取消”的问题,因为请求已经发出
请注意,您可以使用
onHeadersReceived
,用于您的目的-在该事件中提供的头是用于重定向请求的头,您可以通过重定向(此时允许)到您自己的扩展页来覆盖它
不过,我也必须说,你可能在这里追捕错误的嫌疑人。据我所知,
webRequest
,这只会吸引人;任何其他重定向方法,如更改window.location
,将意味着此特定网络请求成功,然后生成后续导航,该导航对webRequest
是透明的
一直以来,HTTP 3**重定向最常用于将HTTP重写为https或将URL修改为规范URL的良性目的。应发出警报/确认/提示,以免阻塞js引擎和浏览器。可能他们已经实现了。alert/confirm/prompt是为了不阻塞js引擎和浏览器。也许他们已经实施了。