繁体   English   中英

Chrome WebRequest无法正常阻止

[英]Chrome WebRequest not blocking properly

我正在创建一个针对我无法访问其服务器的特定站点的扩展。 我试图以一种允许我使用HEAD请求获取重定向URL的方式来处理HTTP 302重定向。 我这样做的代码是这样的:

var redirUrl = "";
var requestId = 0;

chrome.webRequest.onBeforeRedirect.addListener(function(details){
  console.log("before redirect");
  if(details.method == "HEAD"){
    redirUrl = details.redirectUrl;
    requestId = details.requestId;
  }
},
{urls: [matchUrl]});

chrome.webRequest.onHeadersReceived.addListener(function(details){
  console.log("on headers received");
  if(details.requestId == requestId){
    var temp = {"name":"redirUrl","value":redirUrl};
    details.responseHeaders.push(temp);    
  }  
  return {responseHeaders:details.responseHeaders};  
},
{urls: [matchUrl]},["responseHeaders", "blocking"]);

chrome.webRequest.onCompleted.addListener(function(details){
  console.log(JSON.stringify(details.responseHeaders));
},
{urls: [matchUrl]},["responseHeaders"]);

现在,当前的匹配不够具体,无法通过正常导航到匹配的网址来触发这些事件。 这样做后,一切进行得很顺利,当然不是HEAD请求,也不会添加任何内容。 即使我允许所有重定向的请求,也可以添加标题。 当我尝试在后台js文件的其他位置调用此命令时,就会出现我的问题:

 $.ajax({
   url: url,
   data: datas,
   type: "HEAD",
   success: function(data,statusCode, jqXHR){
     console.log(jqXHR.getAllResponseHeaders());
   }      
 }); 

onHeadersRecieved侦听器的阻塞部分完全可以防止触发该事件,如果我删除阻塞,则没有足够的时间来附加标题。 所以我的问题是什么会阻止它正确触发事件?

好吧,这似乎是chrome中的错误,而不是我的代码中的错误,并且该修复程序应该在某个时候逐步进入稳定的渠道,希望早日生效。 我相信可能是这个问题 ,或者至少与此有关,并且该代码已确认在26.0.1386.0 canary

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM