Javascript 通过Google Chrome扩展修改Referer请求头

Javascript 通过Google Chrome扩展修改Referer请求头,javascript,google-chrome-extension,underscore.js,Javascript,Google Chrome Extension,Underscore.js,我有以下代码试图确保在发出请求时设置了Referer头: chrome.webRequest.onBeforeSendHeaders.addListener(function (info) { var refererRequestHeader = _.find(info.requestHeaders, function (requestHeader) { return requestHeader.name === 'Referer'; }); var r

我有以下代码试图确保在发出请求时设置了Referer头:

chrome.webRequest.onBeforeSendHeaders.addListener(function (info) {
    var refererRequestHeader = _.find(info.requestHeaders, function (requestHeader) {
        return requestHeader.name === 'Referer';
    });

    var refererUrl = info.url.substring(0, info.url.indexOf('/embed/'));

    if (_.isUndefined(refererRequestHeader)) {
        info.requestHeaders.push({
            name: 'Referer',
            value: refererUrl
        });
    } else {
        refererRequestHeader.value = refererUrl;
    }   

    return { requestHeaders: info.requestHeaders };
}, {
    //  Match on my specific iframe or else else this logic can leak into outside webpages and corrupt other YouTube embeds.
    urls: ['*://*.youtube.com/embed/?enablejsapi=1&origin=chrome-extension:\\\\jbnkffmindojffecdhbbmekbmkkfpmjd']
},
    ['blocking', 'requestHeaders']
);
这段代码99%的时间都非常有效。然而,在某些PC上,它失败了。我正试图调查为什么会发生这种情况,但我没有太多的线索

我的问题是:

  • 这段代码看起来适合它试图实现的目标吗?我尝试查找现有的Referer requestHeader。如果找到,我将标题的值设置为给定的URL。如果找不到标题,我将按下它
  • 我已经阅读了通过chrome.webRequest.handlerbhaviorchanged公开的“handlerbhaviorchanged”方法,但我仍然不确定这是否能解决我的问题。我发现了这篇文章:它暗示了chrome.webRequest的间歇性错误。。。然而,我没有看到任何结论。在设置我的侦听器后,调用HandleBehavior或Changed是否明智
  • 对于调试此问题,我还有哪些其他选项?是否有人在相关场景中经历过间歇性故障

这段代码中的
\u
是什么?它是我的标签中表示的下划线JS库。其他扩展正在进行冲突性更改?我正在与一位用户交谈,他在几分钟前安装了扩展。之后他没有安装任何其他东西,根据文档,冲突解决支持最近安装的扩展。所以,我不确定情况是否如此。这真的有效吗?你不应该用
chrome-extension://
代替'chrome-extension:\\\\`吗?当代码“失败”时会发生什么?