【问题标题】:Chrome Extension crashes with "bad extension message webRequestInternal.eventHandled"Chrome 扩展程序因“错误的扩展程序消息 webRequestInternal.eventHandled”而崩溃
【发布时间】:2012-08-26 10:01:33
【问题描述】:

我有一个 chrome 扩展程序突然崩溃了,所以我看到你可以通过激活日志来调试你的 chrome,所以我就是这样做的,我注意到在崩溃发生之前,它会抛出一个错误:“错误的扩展消息 webRequestInternal.eventHandled : terminating renderer.”,所以这个错误可能发生在 webRequests 侦听器之一中。但我不知道该怎么做才能使它正确。

这是函数关闭前发生的日志错误:

[1888:3844:17965500:ERROR:extension_function.cc(143)] bad extension message webRequestInternal.eventHandled : terminating renderer.
[1888:3844:17965625:VERBOSE1:web_request_time_tracker.cc(181)] WR percent 2643: http://mypage.com/test: = 0.985185
[1888:3844:17965625:VERBOSE1:web_request_time_tracker.cc(181)] WR percent 2644: http://mypage.com/test: 123/123 = 1
[1888:3464:17965734:VERBOSE1:speech_input_extension_manager.cc(228)] Extension unloaded. Requesting to enforce stop...

我有 2 个 webRequest 监听器:

OnBeforeRequest 页面阻塞:

chrome.webRequest.onBeforeRequest.addListener(blockURLs,
    {urls: ["http://*\/*", "https://*\/*"]}, //I have to use all because I use specific page filters
    ["blocking"]
);

function blockURLs(details){    

    var url = details.url.split('/');
    if(STRING_OF_SERVERS.indexOf(url[2]) < 0 || details.url.indexOf('.css') > -1 )
    return {cancel: true}; 
}

还有onBeforeSendHeaders(这可能是一个错误):

 chrome.webRequest.onBeforeSendHeaders.addListener(
      function(details) {
                    var cookie_found = false;
                    for (var i = 0; i < details.requestHeaders.length; ++i) {



                      if (details.requestHeaders[i].name === 'Cookie') {

                            //details.requestHeaders.splice(i,1); //,localStorage['COOKIES']
                            //alert("ADDED: " + localStorage['COOKIES']);

                            if(window['SERVIDOR_TEMP_DATA_' + SERVER_INDEX]['COOKIES'] != ''){
                                details.requestHeaders[i] = new Object();
                                details.requestHeaders[i].name = 'Cookie';
                                details.requestHeaders[i].value = window['SERVIDOR_TEMP_DATA_' + SERVER_INDEX]['COOKIES'];
                            }else{
                                window['SERVIDOR_TEMP_DATA_' + SERVER_INDEX]['COOKIES'] = details.requestHeaders[i].value;


                        cookie_found = true;
                        break;
                      }
                    }

                    if(cookie_found == false && window['SERVIDOR_TEMP_DATA_' + SERVER_INDEX]['COOKIES'] != ''){
                            var i = details.requestHeaders.length;
                            details.requestHeaders[i] = new Object();
                            details.requestHeaders[i].name = 'Cookie';
                            details.requestHeaders[i].value = window['SERVIDOR_TEMP_DATA_' + SERVER_INDEX]['COOKIES'];
                    }


    //console.log(details.url);
    //console.log(details.requestHeaders);

    return {requestHeaders: details.requestHeaders};
  },


  {urls: URLS_TYPE, types : ["main_frame", "sub_frame", "xmlhttprequest", "object",  "stylesheet", "script", "image",  "other"]},
  ["blocking", "requestHeaders"]);



  //StartClicking();
});

未指定的变量:

*var URLS_TYPE is an array of Sites allowed
*var STRING_OF_SERVERS is a String containing all the possible combination of sites that are allowed

在我的应用程序中,我提出了很多网络请求,但我不知道该怎么办了:/ 什么可能导致这次崩溃?

提前致谢。

【问题讨论】:

  • 将您的扩展缩减为重现问题的最小扩展,并在new.crbug.com创建错误报告
  • 你是什么意思将扩展减少到最小扩展?
  • 删除不会导致崩溃的代码。
  • 这就是问题所在,我不知道崩溃发生在哪里,是在我的代码中还是实际上在 webRequest 的东西上,因为它以这种方式工作了几个小时,但不知从何而来崩溃:/

标签: google-chrome google-chrome-extension


【解决方案1】:

我找到了答案。 问题是,如果请求标头缺少任何所需的信息,它只会崩溃而不是报告错误。

我的 details.requestHeader 正在返回一个只有 name 而没有 value 属性的 cookie,所以如果我添加 value 属性,崩溃就会消失。

Cookie 对象应该是这样的:

{ name: "key", value: "val"}

我只生成了{name: "key"},因为我添加了一个未定义的值,在我使用JSON.Stringify(details.requestHeaders) 之后,我可以看到它丢失了,现在问题解决了。

我只需要确保 cookie 值不是未定义的,如果它只是添加一个空字符串或任何你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-26
    • 2023-04-01
    • 2014-08-05
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多